我面临的情况是我有一个JSP表单连接到servlet和一个提交按钮,我在servlet页面也有一个验证程序,当一些验证被违反时,我想回到具有表单的jsp,但是当我执行所有文本字段时都是空的。 我该怎么做 ? 我的意思是如何回到jsp页面并且文本字段在提交之前具有相同的值?
messages.put("Applied", "Sorry, but you already Applied");
request.getRequestDispatcher("/Nurses.jsp").forward(request, response);
任何人都可以尽快帮助我。
答案 0 :(得分:0)
您正在向jsp页面发送相同的请求对象。使用此请求对象再次填写所有字段。
另一个选择是使用ajax
进行服务器端验证。
答案 1 :(得分:0)
您可以使用javascript历史记录,只需在无效数据的情况下打印,页面将在客户端返回。
<script>
window.history.go(-1);
</script>
答案 2 :(得分:0)
这是servlet + JSP中的常见用例。这就是为什么请求中存在属性的原因。
在转发(重定向不同且不得在此处使用)之前,您应该在servlet中存储请求属性中的有趣值到JSP。
在JSP中,您只是尝试从请求属性中获取值。如果它们存在,请使用它们(当从验证错误转发时),如果不存在(正常情况),您将获得将在JSP中显示为空的空值。
(您可以使用<jsp:usebean>
获取请求属性)
答案 3 :(得分:0)
当您使用相同的请求时响应对象,所以你将在同一个会话中。
1)将所有表单参数(JSP FORM)的值存储到Servlet中的HttpSession对象。
HttpSession session = request.getSession();
并使用session.setAttribute()方法保存所有表单元素值
2)使用JSP中的HttpSession对象在JSP中检索所有字段值
Retrieve form element value using session.getAttribute()
由于 SP
答案 4 :(得分:0)
由于您从servlet到jsp的转发请求,请尝试使用EL&amp; jsp中的taglibs,例如:
<%@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>