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

  • 本文关键字:数组 POST java html spring jsp
  • 更新时间 :
  • 英文 :


所以基本上我有

  • 宣誓书控制器-控制器
  • 宣誓书.jsp-获取视图页面
  • 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>

这目前不起作用。我知道我可能只是做错了,所以请有人至少给我指一个正确的方向。我只是还没有找到一个好的谷歌查询来得到答案。

表不是表单元素(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

最新更新