从 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>
我面临的情况是我有一个 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>