struts中的request.getParameterValues

时间:2011-06-11 06:45:43

标签: java java-ee struts

我想将以前的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: &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>

3 个答案:

答案 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}" />