将表单提交给Servlet后,如何在JSP中保留HTML表单字段值? [英] How can I retain HTML form field values in JSP after submitting form to Servlet?

查看:200
本文介绍了将表单提交给Servlet后,如何在JSP中保留HTML表单字段值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

解决方案

您可以通过 $ {param} 。

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

请注意JSTL的 fn:escapeXml()是必要的,以防止XSS攻击。另请参阅 JSP / Servlet Web应用程序中的XSS预防

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

 < input type =checkboxname =farvalue =a$ {paramValues.far.stream( ).anyMatch(v-> v =='a')。get()? 'checked':''} /> 
< input type =checkboxname =farvalue =b$ {paramValues.far.stream()。anyMatch(v-> v =='b')。get()? 'checked':''} />
< input type =checkboxname =farvalue =c$ {paramValues.far.stream()。anyMatch(v-> v =='c')。get()? 'checked':''} />
...
< select name =boomultiple>
< option value =a$ {paramValues.boo.stream()。anyMatch(v-> v =='a')。get()? 'selected':''}>标签一个< / option>
< option value =b$ {paramValues.boo.stream()。anyMatch(v-> v =='b')。get()? 'selected':''}>标签b< / option>
< option value =c$ {paramValues.boo.stream()。anyMatch(v-> v =='c')。get()? 'selected':''}> label c< / option>
< / select>


After submitting data in the HTML from, a servlet adds these data to my DB and forwards a result message to a JSP page. I want to retain the initially submitted values in the form after the forward.

Is it sensible to make an object in a servlet and add all the parameters I receive and send it with a request to JSP? Is there another better way?

解决方案

You could access single-value request parameters by ${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>

Do note that JSTL's fn:escapeXml() is necessary in order to prevent XSS attacks. See also XSS prevention in JSP/Servlet web application.

You could access multi-value request parameters by ${paramValues} and EL 3.0 streams.

<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>

这篇关于将表单提交给Servlet后,如何在JSP中保留HTML表单字段值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆