在struts2中,一般的action都继承ActionSupport这个类,可以重写public void validate()来进行数据校验,对应提示信息来说一般有两个比较常用的方法就是this.addFieldError("field name","error message"); 和 this.addActionError("error message");两个方法。
由于在ActionSupport这个类实现了ValidationAware接口,接口里面声明了这两个方法:
1public void addActionError(String anErrorMessage) {2 validationAware.addActionError(anErrorMessage);3 }45 public void addActionMessage(String aMessage) {6 validationAware.addActionMessage(aMessage);7 }
而ValidationAwareSupport实现了ValidationAware接口,通过查看ValidationAwareSupport源码中的两个错误提示方法:
private Collection actionErrors; private Map fieldErrors;1public synchronized void addFieldError(String fieldName, String errorMessage) {2 final Map errors = internalGetFieldErrors();3 List thisFieldErrors = (List) errors.get(fieldName);45 if (thisFieldErrors == null) {6 thisFieldErrors = new ArrayList();7 errors.put(fieldName, thisFieldErrors);8 }910 thisFieldErrors.add(errorMessage);11 }1public synchronized void addActionError(String anErrorMessage) {2 internalGetActionErrors().add(anErrorMessage);3 }4
注:由于fielderrors级别是Map类型,所以this.addFieldError("field name","error message"); ,而actionerror级别是Collection级别,所以this.addActionError("error message");
在实际的项目开发应用中如果同时用到field和action错误级别的时候,在jsp页面中的表单有用到struts2的标签来实现的话,就有可能对于同一个表单,既有filed级别error提示又有action级别的error提示,这时,可以根据项目的实际需要来取舍,但是如果两个都要同时存在的时候,只显示action级别的error,而不显示field级别的action,由于struts2标签默认就是显示field级别的error,所以要修改模板,加入theme="simple"即可,这时struts2表单那标签默认的显示field错误提示失效,使用这个模板的好处还可以和普通的html一样随便设计版面。例如:<s:form action="RegisterAction"theme="simple" >
PS:要显示action级别的错误提示,需要在jsp页面中的表单里面加入<s:actionerror/>。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索struts2标签
, 表单
, action
, struts2 action jsp
, 提示
, error
, field
, struts2 action 方法
, struts2的action方法
, struts2 404错误
, addactionmessage
, struts2标签 action
级别
struts2 fielderror、struts2 textfield、struts textfield属性、struts2 s textfield、struts2 s fielderror,以便于您获取更多的相关知识。