我在代码的正常执行中给一个字符串变量一个值,但如果发生异常,我会给它另一个值,问题是在catch块中,该值仍然与我首先分配的值相同。
这是我的代码,首先我在try块中分配页面值“addUser”并在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
有人可以帮忙吗?并提前完成。
答案 0 :(得分:8)
您正在调用request.getParameter()
而不是request.getAttribute()
来获取该值。由于您已将其设置为请求属性,因此您还应将其作为请求属性。
所以:
request.setAttribute("foo", foo);
仅适用于
Object foo = request.getAttribute("foo"); // NOT getParameter().
getParameter()
仅适用于HTTP请求参数,您可以在请求URL或HTML表单的输入字段中指定。
答案 1 :(得分:0)
除了BalusC的观点“
在您的代码中,您已声明了两个“String page”变量。这不会编译。我认为您在catch中传递给请求的参数必须是“其他”页面变量。但这很难分辨,因为这不是一个真实的例子。