我有一個Java Web應用程序。它基本上是這樣的:如何將服務/ DAO中的「警告」消息傳遞給UI?
editUser.jsp -> ControllerServlet.java -> UpdateUserCommand.java -> UserService.java -> UserDAO.java -> USER_TABLE.db
用戶點擊editUser.jsp頁面上的「保存更改」按鈕,成功,認爲被重定向到它們都帶有隻有閱讀viewUser.jsp頁顯示用戶的視圖並顯示「用戶更改成功保存」消息。
例如,UpdateUserCommand.java作用:
user.setWhatevers(/* whatevers */);
try {
user = this.userService.updateUser(user);
messages.recordSuccessMessageForView("User changes successfully saved.");
} catch (Exception x) {
messages.recordErrorMessageForView("There was an error; "+x.getMessage());
}
/* redirect to viewUser.jsp page */
我的問題是,裏面UserService.java我把別的東西 - 比方說,發送電子郵件NotificationService.java。如果發送電子郵件失敗,我會記錄電子郵件發送錯誤,但我正常進行。
結果是,用戶看到「成功保存!」消息,但沒有可見的指示電子郵件未被髮送。 (即使是記錄在服務器上發送電子郵件錯誤)
例如,UserService.java作用:
public User updateUser(User user) throws Exception {
try {
this.userDAO.updateUser(user);
try {
this.notificationService.sendEmail("[email protected]", "user saved");
} catch (Exception x) {
logger.log("Error sending email; "+x.getMessage();
}
} catch (Exception x) {
throw new Exception("Error saving!", x);
}
}
所以我的問題是,你怎麼會建議我從UserService傳達回UpdateUserCommand有一個電子郵件相關的警告消息顯示在UI中?
UpdateUserCommand.java可以很容易地做:
messages.recordWarning("Could not send the email.");
但UserService.java沒有訪問 '消息' 對象。而且我不希望UserService引發異常,因爲我希望一切都按照正常進行。
任何建議,非常感謝!
羅布