我有Servlet部分,它接收HttpServletRequest,如下所示
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
if (request.getParameter("STATE").equalsIgnoreCase("TX")) {
request.setAttribute("STATE", "IL");
}
System.out.println("Printing " + request.getParameter("STATE"));
}
我写的代码是当我将STATE传递为'TX'时,它进入if块并以IL作为重载状态。
但是新值并没有覆盖,我总是在获取TX。收到TX请求后,我需要用IL替换TX。
请帮助我
答案 0 :(得分:0)
首先根据要设置request.setAttribute(“ STATE”,“ IL”)的参数值,在if块内部和if块外部再次使用request.getParmater(“ TX”) .getParameter(“ STATE”)。
注意: 在这里,您没有根据参数名称覆盖您,而是在请求中设置了some属性。请求参数是不可变的,您无法更改
答案 1 :(得分:0)
在您的if条件中,您正在设置/覆盖属性,并且正在打印参数,因此不会获得更新值。
您无法从HttpServletRequest更改请求参数,因此您需要使用属性来修改请求。
请将您的代码更改为
if (request.getParameter("STATE") != null && request.getParameter("STATE").equalsIgnoreCase("TX")) {
// If request contains TX, then add updated STATE in attribute
request.setAttribute("STATE", "IL");
} else {
// If request doesn't contains or contains other than TX then add previous status in attribute
request.setAttribute("STATE", request.getParameter("STATE"));
}
// Now we are using attribute instead of parameter
System.out.println("Printing " + request.getAttribute("STATE"));