使用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。 但很难说,因为这不是一个真实的例子。