从 servlet 重定向回带有空文本字段的 jsp

Redirect from servlet back to the jsp with empty text fields

我面临的情况是我有一个 JSP 表单连接到一个 servlet 和一个提交按钮,我在 servlet 页面中也有一个验证程序,当某些验证被违反时,我想返回具有表单的 jsp,但是当我这样做时,所有文本字段都是空的。 我该怎么做 ? 我的意思是如何返回 jsp 页面,并且文本字段中的值与提交前的值相同?

  messages.put("Applied", "Sorry, but you already Applied");
        request.getRequestDispatcher("/Nurses.jsp").forward(request, response);

谁能尽快帮助我。

您正在向 jsp 页面发送相同的请求对象。使用此请求对象再次填写所有字段。

另一种选择是使用 ajax 进行服务器端验证。

您可以使用 javascript 历史回溯,只需打印此数据以防无效数据,页面将 return 在客户端回溯。

<script>
     window.history.go(-1);
</script>

这是 servlet + JSP 中的常见用例。这也是请求中有属性的原因。

您应该在您的 servlet 中在 forwarding 之前在请求属性中存储有趣的值(redirecting 不同,此处不得使用)以JSP.

在 JSP 中,您只需尝试从请求属性中获取值。如果它们存在,则使用它们(当从验证错误转发时),如果不存在(正常情况),您将获得空值,这些值将在 JSP.

中显示为空

(可以使用<jsp:usebean>获取请求属性)

由于您使用相同的请求和响应对象,因此您将处于同一会话中。

1) 将所有表单参数(JSP FORM)的值存储到Servlet中的HttpSession对象中。

HttpSession 会话 = request.getSession();

并使用 session.setAttribute() 方法,保存所有表单元素值

2) 使用 JSP

中的 HttpSession 对象检索 JSP 中的所有字段值
Retrieve  form element value using session.getAttribute()

谢谢 SP

由于您将请求从 servlet 转发到 jsp,请尝试在 jsp 中使用 EL 和标签库,例如:

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- ${param.name} will give the value which was submitted -->
<form>
  User name: <input type="text" name="user" value="${param.user}"/>
  <br/>
  Gender:
    <input type="radio" name="gender" value='m'
    <c:if test="${'m' eq param.gender}"> checked='checked' </c:if>
     /> Male
    <input type="radio" name="gender" value='f'
    <c:if test="${'f' eq param.gender}"> checked='checked' </c:if>
     /> Female
</form>