当前位置: 首页 > 知识库问答 >
问题:

在servlet中收集并保存多个动态超文本标记语言输入的提交值

刘瑞
2023-03-14

我能够使用JSTL以JSP形式显示bean的数组列表,方法是循环遍历列表并在HTML输入标记中输出bean属性。

<c:forEach items="${listOfBeans}" var="bean">
  <tr>
    <td><input type="text" id="foo" value="${bean.foo}"/></td>  
    <td><input type="text" id="bar" value="${bean.bar}"/></td>                     
  </tr>
</c:forEach>

如何对JSP进行编码,以便在页面提交时更新的值位于ArrayList的适当项中?

共有1个答案

胡墨竹
2023-03-14

鉴于此简化模型:

public class Item {
    private Long id;
    private String foo;
    private String bar;
    // ...
}

以下是在列表中提供的方法

<c:forEach items="${items}" var="item">
    <tr>
        <td>
            <input type="hidden" name="id" value="${item.id}" />
            <input name="foo_${item.id}" value="${fn:escapeXml(item.foo)}" />
        </td>  
        <td>
            <input name="bar_${item.id}" value="${fn:escapeXml(item.bar)}" />
        </td>
    </tr>
</c:forEach>

(注意fn:escapeXml()作为XSS攻击预防的重要性)

因此,基本上,您需要将项目的唯一标识符设置为每行中的隐藏输入字段,如上面的代码片段所示:

<input type="hidden" name="id" value="${item.id}" />

您应该反过来使用此id作为同一行中所有输入字段的name的后缀,例如:

<input name="foo_${item.id}" ... />

在servlet中,您可以收集

for (String id : request.getParameterValues("id")) {
    String foo = request.getParameter("foo_" + id);
    String bar = request.getParameter("bar_" + id);
    // ...
}

您也可以在不使用id的情况下完成这一切,并按名称将所有输入作为数组抓取,如so和request。getParameterValues(“foo”),但请求参数的顺序不受您的控制。HTML表单将按顺序发送,但最终用户可以轻松地操纵顺序。

这里不需要JavaScript混乱。

  • 使用MVC和DAO模式在JSP页面的HTML中显示JDBC结果集
  • ServletRequest。getParameterMap()返回映射
 类似资料:
  • 我想开发一个包含注册和登录按钮的登录HTML页面。在运行时的HTML页面中,我可以选择任何按钮(登录/注册)。点击注册页面时,页面应重定向至注册JSP程序,点击登录页面时,页面应重定向至登录Servlet程序。现在的问题是,我必须在html页面中提到表单的实际方法?如何解决这个问题?

  • 我有一点HTML应该调用/nodes/calibleph?值=浮点数: 编辑:这家伙似乎也有同样的问题

  • 我正在工作的工具提示和从后端我将获得数据与html标记。我需要在工具提示中显示相应的标签中的相应数据。例如,我将从后端获得Hello用户单击此处。我必须显示为你好用户在h1格式,点击这里应该是一个锚。我尝试了这两个功能,并取代其不工作。 具有以下功能: 替换: https://codesandbox.io/s/serene-fast-u8fie?file=/App.svelte

  • 我们有一个基于Java的系统,它从数据库中读取数据,用预设的标记合并单个数据字段,并用将结果转换为。 在格式中,它看起来像这样: 现在我正在寻找一种方法来允许一些字段包含静态超文本标记语言格式的内容。此内容将由我们启用超文本标记语言的编辑器(类似、等的东西)生成或从外部粘贴。 我的计划是遵循这篇JavaWorld文章的配方: < li >使用< code>JTidy将HTML格式的字符串转换为正确

  • 我正在想办法完全自动化詹金斯的硒测试。 我的全部想法是:我想用Selenium IDE记录一个测试。然后将测试另存为HTML代码。将HTML文件放在test1中。和詹金斯一起在服务器上测试。Jenkins应该根据HTML文件的信息进行测试。 最后一句话现在是问题所在。我找不到一种简单的方法将HTML文件转换成可能的JUnit测试并运行它。 我找到了selenese4j,这个想法很好,但它只返回测试

  • 我试图在HTML的pre标签中包装文本,但它不起作用。我使用下面的CSS作为我的标签。 我从如何在pre标记中换行文本? 我已添加