如何将List从JSP传递到ACtion类

时间:2011-06-13 15:16:39

标签: jsp struts

美好的一天!

我想将我的代码转换为STRUTS ..我尝试不在我的Action类中使用getParameter。 但是我不能在不使用getParameter的情况下将信息从JSP传递给Action Class。

JSP:

 <html:form action="EditExam">
                <input type = "hidden" name = applicantNumber value="${applicantForm.applicantNumber}"  >

                <table>
                    <c:forEach var="exam" items="${examList}">
                        <input type = "hidden" name ="examId" value="${exam.examId}"  >
                       <tr>
                           <td>Exam Type: &nbsp</td>       <td><input type="text" value="${exam.examName}" name="examType" readonly ="true"></td>
                       </tr>
                       <tr>
                           <td>Date: </td>                 <td><input type="text" value="${exam.examDate}" name="examDate" class="date"></td>
                       </tr>
                       <tr>
                           <td>Result: </td>               
                           <td>
                                <select name = examResult> 
                                    <option value="Pass" ${exam.examResult == 'Pass' ? 'selected' : ''}>Pass</option>
                                    <option value="Fail" ${exam.examResult == 'Fail' ? 'selected' : ''}>Fail</option>
                                    <option value="" ${exam.examResult == '' ? 'selected' : ''}></option>
                                </select>   
                           </td>   
                       </tr>
                        <tr><td>&nbsp</td><td> &nbsp</td></tr>
                    </c:forEach>
                </table>

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

            </html:form>

行动类:

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

        String forward = "success";

        ApplicantForm applicantForm = (ApplicantForm)form;
        int applicantNumber = applicantForm.getApplicantNumber();   

        String examDate[] = request.getParameterValues("examDate");
        String examResult[] = request.getParameterValues("examResult");
        String examId[] = request.getParameterValues("examId");
            //MORE CODES AFTER...

我的问题是: 如何在不使用get参数的情况下将数据从JSP传递给Action Class。

考虑:

  1. 我的考试是一个清单......
  2. EDIT按钮位于循环之外...因此应该捕获循环内的所有更改..(我是否需要传递ArrayList?如何在Action FOrm上捕获它?)
  3. 您的回复将受到高度赞赏。谢谢。

2 个答案:

答案 0 :(得分:2)

你做不到。您可以使用HTTP协议将数据从浏览器(html,jsp的结果)传输到服务器,该协议仅传输文本请求参数。

所以你必须使用request.getParameter[Values](..)。如果您需要List,则可以使用Arrays.asList(array)

我认为struts应该有某种形式的绑定,所以无论你在哪里指定输入参数,你都可以尝试指定List,也许struts会填充它。 (但它仍然会在引擎盖下使用request.getParameterValues(..)

答案 1 :(得分:2)

HTML / JSP不了解列表等java对象。它们只处理纯字符串/数字或字节流。

所以你必须使用

request.getParameter("paramName");

或者如果您需要地图,可以使用

Map < String, String[] > queryParamsMap = (Map < String, String[] > )request.getParameterMap();

从地图中,您可以直接获取特定参数的数组。通过使用例如

String[] paramArray = queryParamsMap.get("myParam");