forms - 将表单提交到 Servlet 后,如何在 JSP 中保留 HTML 表单字段值?

标签 forms jsp servlets retain

提交 HTML 中的数据后,servlet 将这些数据添加到我的数据库中,并将结果消息转发到 JSP 页面。我想在转发后保留表单中最初提交的值。

在 servlet 中创建一个对象并添加我收到的所有参数并将其与请求一起发送到 JSP 是否明智?还有其他更好的方法吗?

最佳答案

您可以通过${param}访问单值请求参数。

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
...
<input name="foo" value="${fn:escapeXml(param.foo)}">
<textarea name="bar">${fn:escapeXml(param.bar)}</textarea>
...
<input type="radio" name="faz" value="a" ${param.faz == 'a' ? 'checked' : ''} />
<input type="radio" name="faz" value="b" ${param.faz == 'b' ? 'checked' : ''} />
<input type="radio" name="faz" value="c" ${param.faz == 'c' ? 'checked' : ''} />
...
<select name="baz">
    <option value="a" ${param.baz == 'a' ? 'selected' : ''}>label a</option>
    <option value="b" ${param.baz == 'b' ? 'selected' : ''}>label b</option>
    <option value="c" ${param.baz == 'c' ? 'selected' : ''}>label c</option>
</select>

请注意,JSTL 的 fn:escapeXml() 对于防止 XSS 攻击是必要的。另请参阅XSS prevention in JSP/Servlet web application

您可以通过 ${paramValues} 和 EL 3.0 流访问多值请求参数。

<input type="checkbox" name="far" value="a" ${paramValues.far.stream().anyMatch(v->v == 'a').get() ? 'checked' : ''} />
<input type="checkbox" name="far" value="b" ${paramValues.far.stream().anyMatch(v->v == 'b').get() ? 'checked' : ''} />
<input type="checkbox" name="far" value="c" ${paramValues.far.stream().anyMatch(v->v == 'c').get() ? 'checked' : ''} />
...
<select name="boo" multiple>
    <option value="a" ${paramValues.boo.stream().anyMatch(v->v == 'a').get() ? 'selected' : ''}>label a</option>
    <option value="b" ${paramValues.boo.stream().anyMatch(v->v == 'b').get() ? 'selected' : ''}>label b</option>
    <option value="c" ${paramValues.boo.stream().anyMatch(v->v == 'c').get() ? 'selected' : ''}>label c</option>
</select>

关于forms - 将表单提交到 Servlet 后,如何在 JSP 中保留 HTML 表单字段值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3937624/

相关文章:

java - jinja2 宏与 jsp2.0 标签

java - 如何使用 spring spEL 将 servlet 上下文路径注入(inject)到 bean 属性?

javascript - 在表单提交时调用 Javascript 函数

javascript - 返回复选框值的对象

jquery - 更改输入 :hidden tag not working - jQuery 中名称 attr 的值

java - 使用 Java 创建 SOAP 服务外观

java - 如何在1个web.xml中定义2个servlet

jquery - 尝试使用 jquery 转义方括号时出现非法字符

html - 跳转到 JSP 中的 anchor

java - 无法让我的 jsp 存储结果集中的整数值