• struts2 action在前台显示信息提示


    一、前端解决

    1、使用javascript代码验证,为空不允许提交。就算验证成功也不是表单提交成功了,只是肯定前端传来的数据是正确的。

    2、使用ajax方式,action处理完成返回一个成功消息就可以了。失败就返回失败消息。(每个提交时都要用ajax,太麻烦)

    二、后台解决

    3、使用struts2自带功能。判断完参数后,如果为空,return到一个错误页面error,正常的话return到一个提交成功页面success。

    第一种:在struts2 action中弹出Js脚本提示信息

    // 让action实现ServletResponseAware接口,同时实现其setServletResponse() 方法
    import org.apache.struts2.interceptor.ServletResponseAware;
    public class StudentAction extends ActionSupport implements ServletResponseAware{
        private javax.servlet.http.HttpServletResponse response;
        
        public String addStudent() throws IOException{
            response.setContentType("text/html;charset=UTF-8");
            response.setCharacterEncoding("UTF-8");//防止弹出的信息出现乱码
            PrintWriter out = response.getWriter();
            studentDAO=new StudentDAO();
            flag=studentDAO.addStudent(stu);
            if(flag){       
                 out.print("<script>alert('添加成功!')</script>");
                 out.print("<script>window.location.href='http://ykdreaming.blog.163.com/blog/stuaction.action'</script>");
                 out.flush();
                 out.close();
                 return null;
            }else{
               return "error";
            }
        }
    }
    
    // 获得HttpServletResponse对象
    public void setServletResponse(HttpServletResponse response) {
       this.response = response;
    }
    View Code

    第二种:把错误信息放入request里面,然后在页面上判断此信息是否存在,存在的话就弹出

    // action:
    request.setAttribute("tipMessage", "提交成功!");// (tipMessage是自定义的)
    
    // 在当前提交的页面里加上如下一段js:
    <script type="text/javascript">
    var msg="${requestScope.tipMessage}";
    if(msg!=""){
    alert(msg);
    }
    </script>
    View Code

    第三种 action 自带错误提示功能(addActionMessage)

    // action
    this.addActionMessage("提交成功!");
    
    // 页面上:
    <s:if test="hasActionMessages()">  
            <s:iterator value="actionMessages">  
                <script language="JavaScript">  
                 alert('<s:property/>');  
                </script>                 
        </s:iterator>   
    </s:if>

    改进:在需要显示消息的页面加入include来引用message.jsp

    message.jsp代码如下
    <%@ page language="java" contentType="text/html; charset=GB18030"  pageEncoding="GB18030"%>  
    <%@ taglib prefix="s" uri="/struts-tags"%>  
    <html>  
       <body>  
             //fielderror  
        <s:if test="hasFieldErrors()">  
            <s:iterator value="fieldErrors">  
                <s:iterator value="value" status="statu">  
                    //field的错误消息是List 因此还需要迭代一次       
                    <s:set name="index" value="#statu.index"/>  
                    <s:set name="msg" value="#msg==null?'':#msg+  
                    value.get(#request.index).toString()+'\
    '"/>//关键代码  
                 </s:iterator>  
            </s:iterator>  
        </s:if>  
    
             //actionerror  
        <s:if test="hasActionErrors()">  
            <s:iterator value="actionErrors">  
                   <script language="JavaScript">  
                    alert("<s:property escape="false"/>")  
                   </script>  
                </s:iterator>  
        </s:if>  
    
             //actionmessage  
        <s:if test="hasActionMessages()">  
            <s:iterator value="actionMessages">  
                <script language="JavaScript">  
                    alert("<s:property escape="false"/>")  
                </script>  
            </s:iterator>  
         </s:if>  
    
             //打印转换好格式的fielderror信息  
        <s:if test="#msg.length()>0">  
            <script language="JavaScript">  
                alert("<s:property escape='false' value='#msg'/>")  
            </script>  
        </s:if>  
        </body>  
    </html>  
    View Code

    4、XML配置校验(表单验证,页面上不用加html代码显示错误信息)

    拦截器和Action放一个包下
    起名规则:1、UserAction-validation.xml (Action类名-validation.xml)对这个action中所有方法进行验证
             2、UserAction-user_add-validation.xml (Action类名-action名-validation.xml)对指定的方法进行验证
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC
              "-//Apache Struts//XWork Validator 1.0.3//EN"
              "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
    <validators>
        <field name="loginName">
            <field-validator type="requiredstring">
                <message>用户名不能为空</message>
            </field-validator>
    
            <field-validator type="stringlength">
                <param name="maxLength">12</param>
                <param name="minLength">3</param>
                <message>用户名长度必须在${minLength}到${maxLength}之间</message>
            </field-validator>
        </field>
        <field name="loginPwd">
            <field-validator type="requiredstring">
                <message>密码不能为空</message>
            </field-validator>
        </field>
    </validators>

    5、注解配置校验

     

    来源: https://blog.csdn.net/zhang527836447/article/details/11796937

  • 相关阅读:
    DDoS攻击
    CSRF攻击
    正向代理和反向代理
    DNS协议
    四次挥手
    Nginx重要概念之lingering_close
    Nginx重要概念之pipeline
    Nginx重要概念之keepalive
    http1.0、http1.1、http2.0三者的区别
    Vue axios封装二
  • 原文地址:https://www.cnblogs.com/shelly0307/p/10815073.html
Copyright © 2020-2023  润新知