【发布时间】:2018-11-22 00:15:14
【问题描述】:
我正在实现一个 REST api Web 服务,它从 MySql 数据库中获取数据。上面写着here,我们不需要显式处理数据库异常。我在 Service 层中有 catch 块。我有以下问题。
1- 我如何将适当的错误消息从 catch 块发送到相应的模型视图?
2- Service 是捕获异常的正确层吗?
我有以下代码
控制器
@RequestMapping(value = "/saveUser", method = RequestMethod.POST)
public ModelAndView saveUser(@ModelAttribute User user, BindingResult result)
{
ModelAndView mv = new ModelAndView();
validator.validate(user, result);
if(result.hasErrors()) {
mv.setViewName("addUser");
}
else {
service.saveUser(user);
mv.setViewName("redirect:/users/listAllUsers");
}
return mv;
}
服务
public void saveUser(User user) {
try {
userDao.saveUser(user);
} catch(DuplicateKeyException e) {
//Here i want to send "User already exist"
} catch(DataAccessException e) {
//Here i want to send "Databae unreachable"
}
}
用户DAO
public void saveUser(User user) {
String sql = "INSERT INTO User (fname, lname, address, phone)"
+ " VALUES (?, ?, ?, ?)";
jdbcTemplate.update(sql, user.getFname(), user.getLname(),
user.getAddress(), user.getPhone());
}
}
【问题讨论】:
-
你的意思是在JSP页面中显示
send the appropriate error message to the respective model view的错误信息吗?
标签: java spring rest spring-mvc spring-jdbc