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

原文地址:https://www.cnblogs.com/shelly0307/p/10815073.html