0

我创建了一个注册页面 ( r.jsp),我们可以在其中输入用户详细信息。单击提交按钮后,servlet 将被击中,它将执行业务逻辑。如果成功,它会重定向到,x.jsp否则如果失败,它会重定向到r.jsp.

我遇到的问题是当出现故障并重定向到r.jsp时,用户输入的数据会丢失。我想保留它。

下面是我在 servlet 中执行的代码:

if (appResponse.getMessageStatus().equalsIgnoreCase(AppConstants.SUCCESS)) {
    request.setAttribute("message", appResponse.getMessage());
    url = "/x.jsp";
} else {
    request.setAttribute("message", appResponse.getMessage());
    url = "/r.jsp";
}
RequestDispatcher dispatcher = request.getRequestDispatcher(url);
dispatcher.forward(request, response);
4

1 回答 1

3

只需在输入元素中重新显示请求参数映射中提交的值。请求参数映射在 JSP/EL 中可用${param}

<input name="foo" value="${fn:escapeXml(param.foo)}" />
<input name="bar" value="${fn:escapeXml(param.bar)}" />
<input name="baz" value="${fn:escapeXml(param.baz)}" />

请注意,JSTL fn:escapeXml()是防止 XSS 攻击所必需的。你可以省略它,但是你有一个XSS 洞

<input name="foo" value="${param.foo}" />
<input name="bar" value="${param.bar}" />
<input name="baz" value="${param.baz}" />

也可以看看:


与具体问题无关,您根本没有重定向。你只是转发。但是,您实际上应该在提交成功的情况下进行重定向,以避免在按 F5 时重复提交(根据PRG 模式)。

也可以看看:

于 2013-02-22T19:15:27.283 回答