现在有一个form,用户填写一些信息,然后提交,提交的时候发现有一项内容不符合要求,这时要返回刚刚的页面,而且要记录用户填写的信息,要求是重新redirect原来的页面,我想问一下,redirect的话怎么保存原来用户填写的信息,因为form的内容较多,信息量比较大。

解决方案 »

  1.   

    使用struts2的标签进行表单验证。
      

  2.   

    如果你项目里用到了struts,把form表单中的标签全部换成struts标签就可以了。
      

  3.   


    用redirect跳转request中的值将不会保存,跳转后的页面无法拿到值
    建议用forward内部转发,将form表单请求的值保存在一个form的javaBean对象中
    然后在request.setAttribute中保存该对象,当验证失败后将对象中的值设置到
    form表单的文本域中即可
    如果用ajax页面无刷新,也就不需要保存填写的值了。因为页面没有刷新,值是再的。用异步验证
      

  4.   

    LZ主要是想通过redirect而保存表单信息。既然不能使用request的。
    那么就只能使用session了。将表单信息封装到一个pojo中,验证前提交的时候,将封装表单信息的pojo放置到session中。如果出现错误消息,在页面form中,可以直接通过value=${sessionSocpe.pojo.属性}这样获取。如果验证通过的时候,为了节约session资源,我们可以将session中的pojo 进行remove掉。
      

  5.   

    感觉还是用AJAX最简单,异步验证,页面局部刷新~~、
      

  6.   

    把参数从处理页面带回原来的页面就可以了呀,比如
    1.jsp:
    <form action="doservlet">
      <input type="text" name="pas1" value="<%=request.getParameter("pas1")%>">
    </form>doservlet.java:
    String str = request.getParameter("pas1");
    验证以后
    response.SendRedirect("1.jsp?pas1="+str);
      

  7.   

    多谢各位,不过有这么几个问题一开始没有说明白:
    1、form里面有文件上传,所以无法使用ajax,即使用ajax预先判断参数也不行,因为上传文件有可能产生异常;
    2、不能使用forward,使用forwar页面刷新会再次提交;
    3、关于session和cookie,因为form里面用到rich text编辑器,内容可能会到达几十K甚至更多,cookie可能无法实现,至于session,内容大的时候好像也有点性能问题。
    除了这几种方法之外,还有没有其他的方法。