如何在请求对象中调用setParameter?

时间:2012-03-19 23:55:48

标签: java jsp jstl

这可能是由于我对JSP和JSTL的误解和信息不完整所致。我有一个网页,我有输入元素,如

<input name="elementID" value="${param.elementID}"/>

当我尝试保存表单时,我检查该elementID和其他元素是否符合某些约束“numeric,less than XXX”。如果他们没有,我会显示一条错误消息。所有参数都已保存,用户在修复错误后无需再次输入。

保存后,当我重定向到要编辑的对象的同一页面时,我正在寻找一种设置参数的方法,如request.setParameter("elementID",..)有没有办法做到这一点?但我唯一能找到的是request.setAttribute

3 个答案:

答案 0 :(得分:6)

HTTP响应不支持传递参数 JSP / Servelet允许您为此目的使用request.setAttributesession.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}之类的代码工作