struts2验证学习笔记

 表单验证Validate:

首先为Action提供<result name="input">错误信息的显示界面,如login.jsp</result>

界面中调试标签<s:debug></s:debug>,可以查看值栈内容

  1.   使用addFieldError
     界面中任意位置可以用EL访问,形式如${errors.username[0]} (推荐)
    可以指定<s:fielderror />处显示全部出错信息。或者
    用<s:fielderror><s:param>username</s:param></s:fielderror>显示特定出错信息,但这种方式不如直接用EL灵活,这种方式显示的结果一定是另起一行的(块级的,相当于div)。 

   在Action(继承ActionSupport)中

  

@Override

  public void validate() {

     // TODO Auto-generated method stub

     super.validate();

     if(null==username||"".equals(username)){

       addFieldError("username", "用户名不能为空!");

     }

     if(null==password||"".equals(password)){

       addFieldError("password", "密码不能为空!");

     }

  }

  

 注意validate方法还可以是validateXxx后面是Action自定义扩展的处理器方法名。由于Struts2通过反射实现调用,性能较差,而validate方法是通过接口Validateable调用的。

 2.    使用addActionError

  界面中为通用标记<s:actionerror/>

  Action中使用 addActionError("用户名不能为空!");

3. 使用structs框架验证

 可配置化校验框架是通过validation拦截器组件实现的, 命名为Action类名-validation.xml或者Action类名-Action类逻辑名-validation.xml,或者Action类名-方法名-validation.xml.

eg:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
<validators>
	<field name="username">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message>用户名不能为空!</message>	
		</field-validator>
	</field>
	<field name="password">
		<field-validator type="requiredstring">
			<param name="trim">true</param>
			<message key="password_null"/>
		</field-validator>
		<field-validator type="regex">
			<!--  -->
			<param name="expression"><![CDATA[(\w{4,10})]]></param>
			<message>密码应为4-10位</message>
		</field-validator>	
	</field>
</validators>

  

有时候在一个Action中有不同的处理方法,每一个方法校验规则都不同。为每一个方法配置一个校验文件,命名为Action类名-方法名-validation.xml;对于在Action程序中的校验,若要分别写校验方法,则命名规则为validate+方法名(首字母大写)。

posted @ 2011-12-09 15:17  tazi  阅读(266)  评论(0编辑  收藏  举报