假如我要进行修改用户信息的操作,action通过request将值传到页面在updateUser.jsp页面的每个文本框的value都得到了值(假如有四个文本框:name、password、age、sex),假如我现在把其中name文本框里面的值删掉,然后提交,它就跳到form里验证,验证当然不通过,返回来,可此时password、age、sex的值的丢失了……怎样才能把第一次得到的值保留下来啊?如上面,我最后想得到的效果是:返回来后,name文本框是空的,它的后面<html:errors property="name" />有错误提示,而password、age、sex还是有值存在的,这种应该如何实现啊?不要说把值放在session里,这种感觉不好,占内存如果不给每个文本框的value赋值(就是不写value这一属性),这种在form返回时,它的值是保留的,但这里必须给每个value赋值,不然,怎么修改用户信息。请教大家好的做法!!!

解决方案 »

  1.   

    我是想通过什么办法,或是通过form里的reset()方法先给每个文本框赋值,但它又怎么先得到从action传过来的值呢?大家回答的请讲详细点!
      

  2.   

     给个JSP里的保留上次输入框值简单做法
     
     <%   
          String username ="";   
          if   (request.getParameter("username")!= null)   {   
                username=(String)request.getParameter("username");   
          }       
      %> 
    <!--username form 里的一个属性 用struts html标签一样-->
    <input name="username" type="text" value="<%=username%>">
      

  3.   

    struts表单验证不通过后,内容并不会消失,你应该不是用的struts标签
      

  4.   

    用的是Struts标签,举个例子来说吧:
    <html:text property="name" value="${userVO.name}" />最开始时,userVO可以从action里得到值,之后从form验证失败返回时,userVO的值就没有
      

  5.   

    这个问题是存在的,因为你验证失败是会跳入的返回值是“input”的后的界面,就相当于重新加载一次这个页面,这样上一次输入的值就消失了,你可以写一个JS的方法记录你这次输入的值》
      

  6.   

    其实你在跳转后的页面hidden一下你跳转的属性,再回来的话应该还有。
      

  7.   

    表单数据默认是是存在于session范围内的,如果改为request,那么也会在提交一次的过程中保留所输入的数据验证不通过会返回到input所在的页面,但这是一次request,所以数据不会丢失之所以你的数据丢失了,是因为userVO.name的数据不存在了,他不存在于任何上下文中而如果这样,数据就不会丢失<html:text property="userVO.name"/> ,前提是你有一个actionForm里面有个属性是useVO或者你用jstl做判断,例如
    <c:if test="${userVO.name == null}">
    <html:text property="name" /> 
    </c:if>
    <c:if test="${userVO.name != null}">
    <html:text property="name" value="${userVO.name}" /> 
    </c:if>
      

  8.   

    你在返回时再把userVO的值给传一下应该就可以了