に例外メッセージを設定しようとしてい<h:message>
ます。
関連するビューコードは次のとおりです。
<h:inputText id="titleId" value="#{bookController.book.title}"/>
<h:message for="titleId"/>
<h:commandButton value="Create a book" actionListener="#{bookController.doCreateBook}" action="listBooks"/>
titleId
が空のときに表示されるメッセージが必要です。タイトルが空の場合、私の@Stateless
EJB メソッドは例外をスローします。
public Book createBook(Book book) throws CustomException {
if(book.getTitle().isEmpty()) {
throw new CustomException("Please, type a Title !");
}
else {
em.persist(book);
return book;
}
}
バッキング Bean がそれをキャッチし、メッセージを設定します。
public void doCreateBook() {
FacesContext ctx = FacesContext.getCurrentInstance();
try {
book = bookEJB.createBook(book);
bookList = bookEJB.findBooks();
} catch (CustomException e) {
ctx.addMessage("titleId", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Error", e.getMessage()));
}
}
私が例外を除いて、例外が発生した場合、入力テキストタグの近くにエラーメッセージを表示する必要がありますが、そうではなく、実行すると書籍の一覧ページが表示され、一覧の下に「エラー」メッセージが表示され、以下に示すように:
入力フィールドの横に完全な例外メッセージを表示するにはどうすればよいですか?