Struts数据校验的两种方法,以及错误标签的格式化

1. Struts数据效验

表单数据的验证:

前台验证:主要是通过JS验证, 表达数据是否合法!

 示例:

   //检查输入的字符是否为数字

  function checkNum(){

   return  str.match(/\d/)==null;     //  \d是一个正则表达式,标识所有数字0-9

 }

后台验证:通过后台java代码进行验证!


Struts数据效验, 通过拦截器完成:

<interceptor

name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>


实现数据校验的两种方式

方法一使用默认的拦截器进行代码手动校验

使用Action(必须继承ActionSupport  或者实现Action接口,不能只有单独的类,因为ActionSupport类实现了Validatetable接口,但他的validate方法是一个空方法,需要我们手动实现) validate()方法会在execute()方法前执行,数据正确才会执行execute()方法。

校验错误时,就//将错误添加到fieldError域中。

我们要指定校验某个方法  比如register()  就将validate改为 validateRegister()

Validate()则是校验所有的方法



步骤一:建立一个需要进行校验的注册界面


步骤二:创建一个Action类继承ActionSupport

public class UserAction extends ActionSupport{
   private User user=new User();	
	public User getUser() {
	return user;
}

public void setUser(User user) {
	this.user = user;
}
 public void validateRegister() {
	   if(user.getUserName()==null||"".equals(user.getUserName())){
		   super.addFieldError("userName", "用戶名必填");
	   }
	   if(user.getPwd()==null||"".equals(user.getPwd())){
		   super.addFieldError("pwd","密码必填");
	   } 
   }

然后对action进行下注册~(别忘了web.xml中配置核心过滤器)                                                

 
<struts>
   <package name="validation" extends="struts-default">
   <global-results>
     <result name="input">/register.jsp</result>
   </global-results>
   
     <action name="user_*" class="cn.itcast.validation.UserAction" method="{1}">
          <result name="success">/register.jsp</result>
     </action>
   </package>
</struts>

                                                       

方法一完毕~


方法二使用XML方式校验Action中的方法

如果一个项目中有大量的Action就会重复的写很多的校验代码,很麻烦。我们使用方法二可以简化校验。

 

1XML文件名称

语法: ActionClassName-validation.xml

注意:此xml需要与当期要验证的action在同一个目录:

举例:UserAction-validation.xml

2)验证指定的方法:

文件命名:

语法:ActionClassName-ActionName-validation.xml

举例:UserAction-user_register-validation.xml

验证UserAction中的register方法


步骤一:同样是建立一个被校验的注册界面(此处省略~)

步骤二:创建一个Action,但是校验处理不在validate()中进行 (配置struts同上,此处省略)

public class UserAction extends ActionSupport{
   private User user=new User();	
	public User getUser() {
	return user;
}

public void setUser(User user) {
	this.user = user;
}
 public String register(){
    	System.out.println(user);
    	System.out.println(1);
    	return SUCCESS;
    }
}


步骤三:对register()方法进行校验,写配置文件,必须和UserAction在同级目录下

命名为UserAction-user_register-validation.xml


<validators>
     <!-- 验证每一个字段用field表示 -->
     <field name="user.userName">
       <!-- 指定使用的验证器 -->
       <field-validator type="requiredstring">
         <!-- 验证失败的错误信息提示 -->
         <message>用户名不能为空!</message>
       </field-validator>
     </field>
     
     <field name="user.pwd">
      <field-validator type="requiredstring">
       <message>密码不能为空!</message>
      </field-validator>
      <field-validator type="stringlength">
       <param name="minLength">6</param>
       <param name="maxLength">8</param>
       <message>密码必须为${minLength}-${maxLength}位</message>
      </field-validator>
     </field>
     
     <field name="user.birth">
     	<field-validator type="requiredstring">
        <message>日期不能为空</message>
       </field-validator>
       
       <field-validator type="date">
         <message>日期格式不正确</message>
       </field-validator>
     </field>
     
     <field name="user.email">
     	<field-validator type="requiredstring">
         <message>邮箱不能为空</message>
       </field-validator>
     
       <field-validator type="email">
        <message>邮箱格式不正确</message>
       </field-validator>
     </field>

  </validators>


最后我们还试着运行一下~~



错误信息的显示

方式1:显示struts运行期间产生的所有错误:

<s:fielderror></fielderror>

方式2:显示指定错误

<s:fielderror fieldName="user.userName"></s:fielderror>

 

 修改struts标签默认的样式: 不让换行 

方式1:


<style type="text/css">
	  ul{
	    display:inline;
	  }
	  ul li{
	   display:inline;
	   color:red;
	  }
	</style>

方式2:

修改标签定义的模板

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

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

 

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

 

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

因为该标签会自带一个列表的效果,不进行效果处理就会变成如下群魔乱舞~

































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值