案例:例如,我们需要对form表单提交的数据进行校验,那么在strus2中是如何做到这点的呢?
首先:我们要创建一个Action类,让他继承ActionSupport,然后我们重写他的validate()方法!这个方法用户检验数据的合法性
例如:我们现在创建一个Aciotn,该Action用于校验用户提交的用户名和手机号.
public void validate() {
//validate会对action中所有的方法进行校验
if(username==null||"".equals(username.trim())){
this.addFieldError("username", "用户名不能为空");
}
if(mobile==null||"".equals(mobile.trim())){
this.addFieldError("mobile", "手机号不能为空");
}else{
if(!Pattern.compile("^1[358]\\d{9}$").matcher(mobile).matches()){ //使用正则表达式对手机进行校验
this.addFieldError("mobile", "手机号格式不正确");
}
}
}
上面有一个addFieldError()这个方法是添加错误信息,到时候用来显示到jsp中给用户提示!
当有错误信息返回的时候,该Action会返回到input视图中,所以我们需要在配置文件中定义一个input视图
<result name="input">/form.jsp</result>
该input视图最后返回到form表单中,给用户友好提示!
最后,如果在jsp中显示错误信息给用户看呢?很简单!只需要加入标签
<%@taglib uri="/strurs-tags" prefix="s" %>
然后利用标签的<s:fieldrror>将错误信息显示给用户。
但是!!!实际开发过程中,我们往往只需要对action中的某一个方法进行校验,那么怎么做呢?非常简单!!
例如,我们有一个方法叫做excute,那么我们在重写validate方法的时候,只需要把方法名改为validateExcute(),即:把需要校验的方法名卸载后面,但是记得,第一个字母是大写。又例如,我们有另一个方法叫做:updata(),我们需要对这个方法进行校验,一样,把validate()方法名改为:validateUpdata()!其他的都不需要改变
搞定!
---------------------------------------------------------------苦难不是博得同情的资本,只有不断奋斗,方能改变命运!