我的项目使用struts2和spring,我有一些服务方法来处理业务逻辑。 例如
public void aMethod(){
if(!validate()) return;
process();
}
private boolean validate() {
return validateA()&&validateB()&&validateB();
}
但是当我调用动作(Controller)图层时,我发现页面中没有显示错误消息。 所以我改变了我的方法:
public String validate() {
if (!validateA()) {
return "error.msg.A";
} else if (!validateB()) {
return "error.msg.B";
}
return null;
}
动作层直接调用validate方法并获取错误消息以处理i18n相关工作。
我的问题是: 服务层中i18n的最佳实践是什么? 我的更改后,我的验证方法在服务层非常奇怪。有什么好方法可以显示i18n错误信息并保持服务层清晰?
答案 0 :(得分:1)
我通常做的是拥有键和消息属性的自定义例外。 密钥是该错误的i18n密钥,该消息是默认消息。
所以在服务中:
try{
some code
}
catch(SomeException e){
handleAppropriatly;
throw new MyCustomException("error.foo","Some default message",e);
}
该操作捕获消息并使用密钥将其正确地添加到正确的位置(addActionError / addFieldError),从而允许您利用您拥有的任何国际化。