快速业务通道

struts2中action和field级别错误处理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

struts2中action和field级别错误处理

时间:2011-08-31

在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/>。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号