我一个action基层了ServletResponseAware,然后用以下代码在登录失败的时候向页面输出js弹出窗口代码,//输出js到页面去
response.setContentType("text/html;charset=UTF-8");
        response.setCharacterEncoding("UTF-8");//防止弹出的信息出现乱码
        PrintWriter out = response.getWriter();
out.print("<script>alert('id或密码错误');</script>");
        
        out.flush();
        out.close();
return "error";
但是我这样做了以后发觉,struts。xml设置的跳转不起效了<action name="adminLogin" class="AdminAction">
<result name="success" type="redirect">/admin/adminMain.jsp</result>
<result name="error">/adminLogin.jsp</result>
</action>
我本来的想法是,登录失败,跳回到登录页面(或者停在登录界面),并向登录界面输出上述的js代码,该怎么实现呢?

解决方案 »

  1.   

    out.print("<script>alert('id或密码错误');location.href='';</script>");return null;或者,
    把<script>alert('id或密码错误');</script>这个放在request作用域中输出。
      

  2.   

    要不然就用json:
                response.setContentType("text/html;charset=UTF-8");
                response.setCharacterEncoding("UTF-8");//防止弹出的信息出现乱码
                PrintWriter out = response.getWriter();
                out.write(json);
                 
                out.flush();
                out.close();
    要不然就存在request中让后到页面接收.
      

  3.   

    我知道你这两个方法都可以做到,但是为啥我那种做法跳转失灵了呢因为out close()啦,你还记不记得jsp的每一行html都是用的out.print();输出的,,你前面都close了,后面怎么关联起来呢??  我猜想的。。
    你可以吧out close()去掉试试看。。
      

  4.   

    没必要做么干,你完全违反了javaee规范,你可以给个状态,界面获取status然后控制if(status==1){执行逻辑}
      

  5.   

    我也估计是out被关了的原因。
    还有,一般判断之后在页面提示是否错误,不会弹出窗口提示。多看看其他网站就知道了。