2011-06-11 69 views
2

我想將以前的J2EE招聘應用程序從servlet轉換爲struts,我想知道在Action類中放置request.getParameterValues(「name」)是否可行。下面是一個示例代碼:struts中的request.getParameterValues

public class ConfirmEditApplicantAction extends Action{ 

    @Override 
    public ActionForward execute(ActionMapping mapping, ActionForm form, 
      HttpServletRequest request, HttpServletResponse response) 
      throws Exception { 
     // TODO Auto-generated method stub 

     String forward = "success"; 

      **String screenNames[] = request.getParameterValues("screenName");** 

      //some codes here.... 


     return mapping.findForward(forward); 
    } 
} 

是來自這個樣本形式在JSP中:

<div id="screenInformation" class="tab_content"> 
     <h4>Screenings:</h4> 

     <form action="EditScreeningServlet" method="post"> 
      <input type = "hidden" name ="applicantNumber" value="${infoObj.applicantNumber}" > 
      <table> 
       <c:forEach var="screen" items="${screenList}"> 
        <input type = "hidden" name ="screenId" value="${screen.screenId}" > 
        <tr> 
         <td>Screen Type: &nbsp</td>  <td><input type="text" value="${screen.screenName}" name="screenName" readonly ="true"></td> 
        </tr> 
        <tr> 
         <td>Date: </td>     <td><input type="text" value="${screen.screenDate}" name="screenDate" class="date"></td> 
        </tr> 
        <tr> 
         <td>Result: </td>    
         <td> 
          <select name = screenResult> 
           <option value="Pass" ${screen.screenResult == 'Pass' ? 'selected' : ''}>Pass</option> 
           <option value="Fail" ${screen.screenResult == 'Fail' ? 'selected' : ''}>Fail</option> 
           <option value="" ${screen.screenResult == '' ? 'selected' : ''}></option> 
          </select> 
         </td> 
        </tr> 
        <tr><td>&nbsp</td><td> &nbsp</td></tr> 


       </c:forEach> 
      </table> 

      <input type="submit" class="saveButton" value="SAVE"> 
     </form> 

回答

0

的支柱方式來處理請求參數是把同一名稱的屬性作爲參數ActionForm,讓Struts爲你填充。這樣,你根本不必處理請求參數,而是處理ActionForm屬性。 因此,要回答你的問題,而不是編碼 代碼:<%= request.getParameter("name") %>

我會在我的ActionForm用的getName()和的setName()方法的代碼的屬性「名」。 在我的JSP中,我會再代碼: 代碼:<bean:write name="MyForm" property="name"/>

OR .. <bean parameter id="username" name="user"/> and <%=username%> 如果JSP被調用的名稱參數,支柱將自動填充表單Bean與name屬性。

這就是爲什麼沒有我知道要顯示請求參數的struts標籤。 jstl中有一個:<c:out value="${param.name}" />

1

我不明白爲什麼它不應該好。你真的運行該代碼,看看它是否工作?如果是這樣,那麼我沒有看到任何問題,它應該是確定的。如果它不是,那麼它很可能不是好的,因爲你沒有工作代碼。

+0

請原諒我的模糊問題,但我的意思是,如果它沒有違反任何編碼規則或標準時,我將servlet代碼轉換爲struts。因爲我知道在將jsp的值傳遞給Action類時使用了ActionForm類。 – 2011-06-11 12:53:03

+0

@mr。你好,我明白了。那麼,在那種情況下,我仍然會說,如果它有效,你可以這樣做。如果你有時間和精力,那麼通過一切手段使它更像Struts一樣的ActionForms。但是,如果這與工作有關,那麼可能會有時間和預算約束。 – deltaforce2 2011-06-11 13:23:13

2

我認爲你可以做到這一點,但要堅持MVC設計,可能最好花一些時間來了解ActionForm。這樣,您可以在擴展ActionForm的java類中對錶單進行驗證。在類ConfirmEditApplicantAction中,您可以在此處編寫更系統化的業務邏輯。