我的项目使用struts2和spring,我有一些服务方法来处理业务逻辑。 例如
public void aMethod(){
if(!validate()) return;
process();
}
private boolean validate() {
return validateA()&&validateB()&&validateB();
}
但是当我在action(Controller)层调用时,发现页面中没有显示任何错误信息。 所以我改变了吹法:
public String validate() {
if (!validateA()) {
return "error.msg.A";
} else if (!validateB()) {
return "error.msg.B";
}
return null;
}
Action层直接调用validate方法,获取错误信息,处理i18n相关工作。
我的问题是: 服务层中 i18n 的任何最佳实践? 更改后,我的验证方法在服务层很奇怪。显示 i18n 错误消息并保持服务层清晰的任何好方法?
最佳答案
我通常做的是拥有具有key 和message 属性的自定义异常。 key 是该错误的 i18n key ,消息是默认消息。
所以在服务中:
try{
some code
}
catch(SomeException e){
handleAppropriatly;
throw new MyCustomException("error.foo","Some default message",e);
}
该操作捕获消息并使用键将其适本地添加到正确的位置 (addActionError/addFieldError),让您可以利用您拥有的任何国际化。
关于spring - 服务层中的 I18n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23936446/