如何在POST中捕获表并将其用作数组

时间:2017-10-11 17:20:45

标签: java html spring jsp

所以我基本上把它打好了

  • AffidavitController - Controller
  • Affidavit.jsp - GET查看页面
  • summary.jsp - POST查看页面

所以基本上我有一个用户填写的表单然后点击提交按钮并发布它。

然后在控制器中调用此方法

@RequestMapping(value = "/affidavit", method = RequestMethod.POST)
public String post(AffidavitDetailDto affidavitDetail, HttpServletRequest request, HttpServletResponse response, Model model) {

现在在这个方法中我捕获了在响应对象中传递的信息。

这方面的一个示例是我在GET视图页面上有一个名称字段,该字段的名称是'custName'

所以我就这样抓住了

    String contactName = request.getParameter("custName");
    model.addAttribute("contactName", contactName);

然后我可以在我的POST视图页面上显示它

                 <p>Name:  ${contactName}</p>

但是现在我想弄清楚我怎样才能对表做同样的事情并将其视为一个数组

以下是如何在GET视图页面上添加它

<table id="certEmail" name="certEmail">
                    <tr>
                        <td>${user.email}</td>
                    </tr>
                </table>

以下是我的尝试

    String[] certEmail = request.getParameterValues("certEmail");

    model.addAttribute("certEmail", certEmail);

这就是我在视图页面上显示的内容

            <div id="Emails">

                <c:forEach items="${certEmail}" var="email">

                    <p>${email}</p>

                </c:forEach>

            </div>

这目前无效。我知道我可能只是做错了所以有人请至少指出我正确的方向。我还没有想出一个好的谷歌查询还没有得到答案。

1 个答案:

答案 0 :(得分:0)

表格不是表单元素(https://www.w3schools.com/html/html_form_elements.asp)。只有表单上的表单元素值才会提交给服务器。而不是

<table id="certEmail" name="certEmail">
    <tr>
        <td>${user.email}</td>
    </tr>
</table>

你应该有像

这样的东西
<table id="certEmail">
    <tr>
        <td>
            <input type="text" name="certEmail" value="${user.email}" />
        </td>
    </tr>
</table>

如果您希望数据可编辑,或

<table id="certEmail">
    <tr>
        <td>
            ${user.email}
            <input type="hidden" name="certEmail" value="${user.email}" />
        </td>
    </tr>
</table>

如果您希望隐藏它并重新发送到服务器。

虽然我应该表示通常应避免使用第二种变体。我建议您传递用户ID 并在后端使用它来加载用户并阅读他的电子邮件。

请了解如何使用HTML表单:https://developer.mozilla.org/en-US/docs/Learn/HTML/Forms/Your_first_HTML_form