使用空文本字段从servlet重定向回jsp

使用空文本字段从servlet重定向回jsp,jsp,servlets,Jsp,Servlets,我面临的情况是,我有一个连接到servlet的JSP表单和一个提交按钮,我在servlet页面中也有一个验证过程,当一些验证被违反时,我想返回到包含表单的JSP,但当我这样做时,所有的文本字段都是空的。 我怎么做? 我的意思是,我怎样才能返回到jsp页面,并且文本字段充满了与提交之前相同的值 messages.put("Applied", "Sorry, but you already Applied"); request.getRequestDispatcher("/Nur

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

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

请任何人尽快帮助我。

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


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

您可以使用javascript历史记录,只要在数据无效的情况下打印出来,页面就会在客户端返回

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

window.history.go(-1);

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

在向JSP转发(重定向是不同的,在这里不能使用)之前,您应该在servlet中的请求属性中存储感兴趣的值

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


(您可以使用
获取请求属性)

因为您使用的是相同的请求和响应对象,所以您将处于相同的会话中

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

HttpSession session=request.getSession()

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

2) 使用JSP中的HttpSession对象检索JSP中的所有字段值

Retrieve  form element value using session.getAttribute()
谢谢
SP

由于您将请求从servlet转发到jsp,请尝试在jsp中使用EL&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>

用户名:

性别: 男性的 女的
OK这很有用,但在这种情况下,我必须一个接一个地设置和获取值,我有很多字段,其中大部分可以添加,即对于某些字段,用户最多可以添加7个字段!!我该怎么对付他们!!如果你觉得有很多负担,那么只添加你的intrest的字段,对于下一个请求,用户将再次添加剩余的字段。非常感谢你,但是使用这种方式有任何缺点吗?当然,缺点是-如果你的表单不是静态的,并且在某个用户的事件上由javascript生成(如
单击此处打开表单
),表单将是空的,但一般来说,没有更多的缺点,您只需将用户从其历史记录返回到上一页,如果您在该页上有一些javascript处理程序-在大多数情况下,除了onLoad事件,它们都可以正常工作,但javascript有办法解决此问题()好的,非常感谢,但是关于java脚本,没有任何方法可以恢复已执行的java脚本操作!在我的表单中,用户可以在表上添加一列,但当他返回时,他找不到它,我如何解决它?这是可能的,但这里的设计很糟糕。最好在iframe中使用javascript发送表单,或者使用AJAX提交表单。若evrything运行正常,在AJAX回调中,您需要导航到带有结果的Required页面。但若您仍想使用当前的aproach,则在提交表单之前,您需要将用户数据存储在某个位置(
localStorege
是最佳位置),然后从storege返回读取的数据并将更改应用到表中。但是切换到AJAX对您来说会更好。对于AJAX,您将完全控制应用程序流(包括表单提交)