Struts2的错误信息分两种级别,第一种是:field(属性)级别;第二种是:action级别
两者的区别在于:addFieldError事实上是将错误信息保存在一个Map中,通过属性名为key,错误信息为value的格式保存,而addActionError则是保存在一个Collection中,再详细的就是保存在一个ArrayList中的,所以,直接保存一个出错信息即可。
if(null == username || username.length() < 6 || username.length() > 10){
this.addActionError("username invalid");
}
当把代码做了以上修改之后,到页面中,输入错误信息,发现,页面回到当前页面,但是没有显示错误信息。
原因:Struts提供的标签有显示错误信息的功能,但是只针对field级别的错误,所以我们定义的action级别错误无法显示,但是由于已经出错,所以留在当前页面。
怎样判断页面是否出错,ActionSupport类中有一个hasErrors方法
public boolean hasErrors{
return (hasActionErrors()||hasFieldErrors());
}
所以,当hasActionErrors和hasFieldErrors中有一个为假,Struts就认为验证出错。
怎样才能在页面上显示ActionError呢?
在页面上加上<s:actionerror/>就OK啦!
所以,当hasActionErrors和hasFieldErrors中有一个为假,Struts就认为验证出错。
怎样才能在页面上显示ActionError呢?
在页面上加上<s:actionerror/>就OK啦!