我想将以前的J2EE招聘应用程序从servlet转换为struts,我想知道在Action类中放置request.getParameterValues(“name”)是否可以。以下是示例代码:
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:  </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> </td><td>  </td></tr>
</c:forEach>
</table>
<input type="submit" class="saveButton" value="SAVE">
</form>
答案 0 :(得分:2)
我认为你可以这样做,但要坚持MVC设计,可能最好花一些时间来了解ActionForm。这样,您可以在扩展ActionForm的java类中对表单进行验证。在类ConfirmEditApplicantAction中,您可以在此处编写更系统的业务逻辑。
答案 1 :(得分:1)
我不明白为什么不应该没问题。您是否真的运行该代码以查看它是否有效?如果确实如此,那么我没有看到任何问题,它应该没问题。如果它没有,那么很可能是因为你没有正常工作的代码。
答案 2 :(得分:0)
struts处理请求参数的方法是在ActionForm中放置一个与参数同名的属性,让Struts为你填充它。这样,您根本不必处理请求参数,而是处理ActionForm属性。
所以,回答你的问题,而不是编码
代码:<%= request.getParameter("name") %>
我会使用getName()和setName()方法在ActionForm中编写属性“name”。
在我的jsp中,我会编码:
代码:<bean:write name="MyForm" property="name"/>
或.. <bean parameter id="username" name="user"/> and <%=username%>
如果使用name参数调用jsp,struts将自动使用name属性填充表单bean。
这就是我知道没有struts标签显示请求参数的原因。
但是在jstl中有一个:<c:out value="${param.name}" />