【问题标题】:How to pass List from JSP to ACtion Class如何将 List 从 JSP 传递到 ACtion 类
【发布时间】:2011-06-13 15:16:38
【问题描述】:

美好的一天!

我想将我的代码转换为 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...

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

考虑:

  1. 我的考试是一个列表...
  2. EDIT 按钮在循环之外...所以应该捕获循环内的所有更改...(我需要传递 ArrayList 吗?如何在 Action FOrm 上捕获它?)

您的回复将不胜感激。谢谢。

【问题讨论】:

  • 我的建议是否回答了您的问题?

标签: jsp struts


【解决方案1】:

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

所以你必须使用

request.getParameter("paramName");

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2012-04-18
      • 2013-06-11
      • 1970-01-01
      • 1970-01-01
      • 2014-09-09
      • 2013-11-02
      • 1970-01-01
      • 1970-01-01
      • 2018-11-02
      相关资源
      最近更新 更多