使用request.setAttribute()传递的值不能通过request.getParameter()
我给了一个stringvariables在正常的代码执行一个值,但如果发生exception,我会给它另一个值, 问题是,在catch块的价值仍然是我先分配的相同 。
这里是我的代码,首先我分配页面值“addUser”里面的try块,并在catch我给它的“ErrorPage”值,我发送页面内的http请求的值为forword方法,并在里面我打印页面的值。 我导致代码的执行错误,我希望它通过catch块,它的确如此,但是当它发送页面值的forword函数的页面的值是“addUser”而不是“ErrorPage”,虽然我分配它到“ErrorPage”!
String page = "addUser"; try { // ... request.setAttribute("page", page); forward(request, response); } catch (SQLException e) { page = "ErrorPage"; request.setAttribute("page", page); forward(request, response); }
这是forword函数
String page = request.getParameter("page"); System.out.println("page is " + page); // each time it prints addUSer
有人可以帮忙吗? 和thanx提前。
您调用request.getParameter()
而不是request.getAttribute()
来获取值。 既然你已经把它设置为请求属性,你也应该把它作为请求属性。
所以:
request.setAttribute("foo", foo);
只有通过
Object foo = request.getAttribute("foo"); // NOT getParameter().
getParameter()
仅适用于HTTP请求参数,您可以在请求URL或HTML表单的input字段中指定。
除了BalusC的观点“
在你的代码中你已经声明了两个“String page”variables。 这不会编译。 我认为你传递给catch中的请求的参数必须是“other”页面variables。 但很难说,因为这不是一个真实的例子。