struts中封装了对response的commit,自己单独的commit当然会出错,可以在页面上转向

解决方案 »

  1.   

    我觉得在提示消息的代码不要写在Action中,写在你要转到的也面比较好,这样符合Struts的MVC设计原则。
      

  2.   

    我现在通过传递一个属性和字符串对象到目标页面,然后再目标页面判断这个属性情况,并进行消息提示,但感觉不是很方便,没有在Action中那样直观便捷!不知道大家还有没有好的方法呀!
      

  3.   

    struts 这样实现的话,脱离了struts的目的。显示层和控制,业务层都没有分离,后期的维护的代价很大。
    在form里面做判断。form里面有专门的方法,如果成功在action做业务,重新做个交互页面,在acton里面用影射找自己的文件。
      

  4.   

    在你要转到的页面加以下代码可行
    <%
    String username = (String)request.getAttribute("username");
    String Registflag = (String)request.getAttribute("Registflag");
    //System.out.println(Registflag);
    //System.out.println(username);
    if("true".equals(Registflag)){
            try {    
                   out.println("<script>");
                   out.println("alert('"+username+"' + ',你已成功注册!请登录!');");
                   out.println("</script>");
               } catch (Exception e) {
                       System.out.println("----->发送提示信息"+e.getMessage());
                   }
    }
    %>
      

  5.   

    如果采用楼上的方法,就脱离了struts,不优雅,不符合MVC的原则,当然如果用Ajax的方式解决应该比较好
      

  6.   

    你要有什么提示消息,就把消息单独写个1.jsp页面,然后出现问题的时候,
    return (mapping.findForward("f1")
    (下面是我的一个程序改出来的例子,看那个"f1",明白了吧,想f几就f几吧,最好别弄太多,呵呵。)
    然后在Struts-config.xml里面,找到这个Action的mapping 
    <action
    path="/CheckBook"
    type="Controller.CheckBookAction"
    name="MyActionForm">
    <forward name="success" path="/pages/BookResult.jsp"/>
    <forward name="f1" path="/pages/1.jsp"/>
    </action>
      

  7.   

    response已返回给客户端时,就不能再转向了吧,回报IllegalStateException异常
      

  8.   

    呵呵,是呀!forward只能一次转向一个呀!
    我现在在页面里面利用参数传状态值和消息参数信息,在页面加载过程利用struts标签进行对象验证,如果有状态参数值,则进行信息提示显示!