[英]How to perform JSF validation in actionListener or action method?
[英]Creating FacesMessage in action method outside JSF conversion/validation mechanism?
我目前正在從核心jsf 2.0 book + glassfish + cdi學習jsf 2.0。
我想問一個關於使用bean-validation-framework處理未在jsf頁面或托管/命名bean中定義的驗證的問題。 我腦子里有這些層次:
我想象層1.5(jsf bean)初始化和調用第2層(業務邏輯對象),在調用業務方法時提供參數,獲取結果,將結果填充到jsf bean屬性中,以便ui可以正確呈現。
令人好奇的是,第2層(業務邏輯對象)可以對提供的參數進行驗證,或者驗證數據等,並且可能拋出異常或錯誤對象。
我想我可以處理異常並獲取層1.5(jsf托管bean)中的錯誤對象,但是我應該如何在呈現的頁面中顯示錯誤? 我似乎無法從我正在閱讀的書中找到它,但我希望有一種方法來創建一個全局錯誤消息,並以某種方式可以將它注入某個地方,以便它由標記呈現?
謝謝 !
您可以使用FacesContext#addMessage()
以編程方式將FacesMessage
添加到上下文中。
FacesContext facesContext = FacesContext.getCurrentInstance();
FacesMessage facesMessage = new FacesMessage("This is a message");
facesContext.addMessage(null, facesMessage);
將客戶端ID參數設置為null
,它將成為全局消息。 您可以使用<h:messages />
顯示和過濾它們
<h:messages globalOnly="true" />
globalOnly="true"
將僅顯示具有null
客戶端ID的消息。
但是,您也可以指定特定的客戶端ID。
facesContext.addMessage("formid:inputid", facesMessage);
然后這個將結束
<h:form id="formid">
<h:inputText id="inputid" />
<h:message for="inputid" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.