actionSupport类
该类实现了action接口和其他的几个有用的接口,比如数据校验、错误消息本地化等.继承该类后,这些功能便自动获得.
一、基本校验
public void validate(){
PortfolioService ps = getPortfolioService();
if ( getPassword().length() == 0 ){
addFieldError( "password", "Password is required.") );
}...
}
public String validateToRegView(){...}
验证方法执行完,控制权返回到工作流拦截器,该方法没有返回值,秘密就在于校验生成的错误消息.
工作流拦截器会查看是否有错误消息生成,如果有的话,他会更改请求的工作流,终止请求处理并立即
返回到用户的输入表单页面.在页面上会显示错误消息.
二、为消息文本使用资源束
硬编码错误消息在action中是不可想象的,好的方式是采用外部资源束文件.
ActionSupport提供了两个接口实现该功能:
- com.opensymphony.xwork2.TextProvider提供了从资源束中提取消息的方法.ActionSupport类给出了实现.使用这些方法都需要指定key值,然后返回和该action关联的属性文件中key所对应的消息.
Register.properties:
user.exists=This user already exists.
username.required=Username is required.
password.required=Password is required.
portfolioName.required=Portfolio Name is required.
==该文件需要Action放在一起.并且文件名要一致==,然后即可通过getText()方法来访问消息了.
addFieldError("username", getText( "user.exists"));
- com.opensymphony.xwork2.LocaleProvider接口暴露了getLocale()方法.
ActionSupport实现了该接口检索用户设置在浏览器中的locale信息.
ActionSupport的TextProvider实现每次接受到消息文本时,也会检查locale信息,他是通过调
用LocaleProvider接口的getLocale()方法,然后定位到相应的属性文件.