【发布时间】:2017-07-18 18:40:39
【问题描述】:
我正在根据 3tier 架构(Presentation、Application、Domain 层)使用 SpringMVC 开发 Web 应用程序。表示层上还有一个外观服务,从控制器到应用程序服务的每个请求都通过外观服务(Contorller -> FacadeService -> ApplicationService)。如果我在应用程序或域层中遇到异常,我应该在 UI 中显示它。现在就是这样实现的。
控制器
@PostMapping("/password/change")
public String processChangePasswordRequest(ChangePasswordForm form, BindingResult bindingResult){
ChangePasswordReqStatus status = facadeService.requestChangePassword(
form.getOld(),
form.getPassword()
);
if(status == ChangePasswordReqStatus.PASSWORD_MISMATCH)
bindingResult.rejectValue("oldPassword", "password.mismatch", "Wrong password");
return "change_password";
外观服务
@Override
public ChangePasswordReqStatus requestChangePassword(Password old, Password password) {
try{
accountService.changePassword(old, password);
}catch (PasswordMismatchException ex){
return ChangePasswordReqStatus.PASSWORD_MISMATCH;
}
return ChangePasswordReqStatus.OK;
}
但我不确定是否可以在外观服务中捕获异常,或者是否有更好的解决方案?
【问题讨论】:
标签: java spring-mvc exception-handling architecture