校验就是说进行验证,核对信息的有效性,然后才进行下一步。
是这样做的:
对要校验数据的类继承ActionSupport类,重写这个方法
比如,校验这个类中username与phone的属性。
@Override
public void validate()
{
if(username==null||"".equals(username.trim()))
{
this.addFieldError("username", "用户名为空");
}
if(phone==null||"".equals(phone.trim()))
{
this.addFieldError("phone", "手机号为空");
}
else
{
if(!phone.matches("^1[358][0-9]{9}$"))
{
this.addFieldError("phone", "手机号格式有误");
}
}
}
当不符合要求时,把错误信息保存,this.addFieldError("" ,"") ;
如果信息符合要求,会在其对应的方法中return “message” 信息,然后 struts.xml 会把页面跳转到成功处理的页面。
若是信息不符合要求,则依然停留在此input页面,
<%@ taglib uri="/struts-tags" prefix="s" %>
<s:fielderror></s:fielderror>
会打印输出存在FieldError中的错误信息。
我的struts.xml中
<package name="default" extends="struts-default">
<action name="showWords_*" class="validate.ShowWords" method="{1}">
<result name="message">message.jsp</result>
<result name="input">index.jsp</result>
</action>
</package>
若是要对某个方法进行校验,只需要去掉重载号@override,并且把函数名validate改为validate+待校验的函数名,注意待校验的函数名要求大写。
若是在把输入类型转化为类的属性过程中,出现问题,那么也依旧停留在input页面。