这可能是由于我对JSP和JSTL的误解和信息不完整所致。我有一个网页,我有输入元素,如
<input name="elementID" value="${param.elementID}"/>
当我尝试保存表单时,我检查该elementID和其他元素是否符合某些约束“numeric,less than XXX”。如果他们没有,我会显示一条错误消息。所有参数都已保存,用户在修复错误后无需再次输入。
保存后,当我重定向到要编辑的对象的同一页面时,我正在寻找一种设置参数的方法,如request.setParameter("elementID",..)
有没有办法做到这一点?但我唯一能找到的是request.setAttribute
。
答案 0 :(得分:6)
HTTP响应不支持传递参数
JSP / Servelet允许您为此目的使用request.setAttribute
或session.setAttribute
。在处理您重定向到的页面时,这两种方法都可用,所以基本上,你做对了......
此外,根据您的描述,您可能需要检查客户端验证:在您使用客户端脚本(javascript)验证表单之前不要提交表单
答案 1 :(得分:0)
在servlet处理表单之后(即将用户输入保存在数据库中),让servlet转发(不会重定向,因为这会丢失请求参数)对包含表单的同一个jsp的请求。所以没有必要设置params,因为servlet只是传回相同的请求对象。
包含表单的jsp应该具有与此类似的输入:
<form>
...
<input type="text" value="${elementid}"/>
...
</form>
语法$ {varname}是EL。因此,如果elementid已经有一个值,那么该textfield将包含该值。或者,如果您没有使用EL和/或JSTL,则使用scriptlet(但这是非常不可取的,EL和/或JSTL应该是这样的):
<form>
...
<input type="text" value="<%= request.getParameter("elementid") %>"/>
...
</form>
答案 2 :(得分:0)
我必须在{j}中添加<%@ page isELIgnored="false"%>
以允许${elementid}
之类的代码工作