struts2学习 : 数据校验

原文链接: https://my.oschina.net/u/2551035/blog/634287

struts2 的数据校验的底层是通过拦截器实现的

实际上分为两种:  一种是通过action里面继承ActionSupport   重写validate方法来实现全局的数据校验 

@Override
	public void validate() {
		if(admin.getUserName() == null || "".equals(admin.getUserName()))
		{
			super.addFieldError("userName", "用户名为空或错误");
		}
		if(admin.getPwd() == null || "".equals(admin.getPwd()))
		{
			super.addFieldError("pwd", "密码为空或错误");
		}
	}

父类维护了一个Map集合

public synchronized void addFieldError(String fieldName, String errorMessage) {
        // 1. 保存错误信息的map集合
        final Map> errors = internalGetFieldErrors();
        // 2. Map的value值  (一个key,对应的多个值用list存储)
        List thisFieldErrors = errors.get(fieldName);
        // 3. 如果错误信息的map中没有当前的key,就直接创建集合
        if (thisFieldErrors == null) {
            // 创建
            thisFieldErrors = new ArrayList();
            errors.put(fieldName, thisFieldErrors);
        }
         // 4. 添加错误信息
        thisFieldErrors.add(errorMessage);
    }


还可以指定action校验

比如   validateLogin()    后面跟着的方法名就是你要验证数据的函数  一定要大写


还有一种就是通过配置xml文件来验证

ActionClassName-validation.xml

AdminAction-validation.xml




    
    	
    		用户名不能为空
    	
    

type里面的类型是

xwork-core-2.3.4.1.jar/com.opensymphony.xwork2.validator.validators/default.xml  里面的拦截器起作用的



 


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    


定义好后  在struts2.xml里面配置错误视图

/login.jsp

要引入<%@taglib uri="/struts-tags" prefix="s"%>

调用 标签把错误信息全部输出

如果你不想把错误信息全部输出 就应该使用

可以显示指定的错误


xml 也可以指定action验证

语法:ActionClassName-ActionName-validation.xml

      举例:UserAction-user_register-validation.xml


注意  要放在同一个包下

验证总结

         代码:

             重写validate()   ,  验证action所有方法

                   Validate方法名(),  验证指定“方法名”的方法

         Xml

                  验证所有方法: ActionClassName-validation.xml

                  验证指定方法: ActionClassName-actionName-validation.xml

 

         代码验证,

                  比较灵活,可以满足所有的需求.

                  比较繁琐,要写重复的验证判断逻辑!

                  适合: 表单字段较少的情况用!

         XML验证:

                  通用,但不够灵活; 可以验证特定简单的业务。

                  适合: 验证表单字段较多,可以大大简化代码!

                            (配置文件过多)

 

Struts在进行数据效验的时候,验证失败,会返回input视图,要求我们要在struts.xml中配置input视图对应的错误页面!

方式2:显示指定的错误

 

显示指定的错误:


方式3: 修改标签定义的模板

找到fielderror标签定义的模板文件:

Struts-core.jar\template\simple\ fielderror.ftl


把修改后的fielderror.ftl文件,放到src/ template/ simple/ fielderror.ftl


这样标签显示的样式就修改了!





转载于:https://my.oschina.net/u/2551035/blog/634287

你可能感兴趣的:(struts2学习 : 数据校验)