2011-12-10 11 views
1

我有一個H:inputText的元素和H:消息吧:JSF不渲染span元素爲H:消息

<h:form id="cancelForm"> 
    <h:inputText id="days" /> 
    <h:message for="days" /> 
</h:form> 

所以,當我打開網頁,JSF呈現一個「跨度」元素爲錯誤信息。還行吧。 當我按下提交申請後,進入java和驗證領域:

// Some code 
if (error) { 
    FacesContext.getCurrentInstance().addMessage("days", new FacesMessage("Error message")); 
    return error(); 
} 

但畢竟這JSF不渲染小時「跨越」:消息。

爲什麼?

回答

3

days只是inputText組件的簡單ID。對於addMessage呼叫,您需要完整的ID(客戶端ID)。

您可以通過查看呈現的HTML源代碼來獲取客戶端ID,或者如果Facelet上的所有父命名容器都具有ID,則可以猜測它。通常所有的父母ID都與:作爲分隔符連接。

要始終獲得100%正確的ID,請將inputComponent綁定到您的支持bean,並在上面顯示的代碼片段中查詢它的ID。

最後,建議一句話:通常是通過驗證器和/或轉換器完成錯誤檢查和添加面部消息。在支持bean中這樣做不應該是你的第一種方法。

+0

Thenks。我跟蹤了id並在java端創建了更詳細的facesMessage對象,並帶有FacesMessage.SEREVERITY_ERROR。 – Daggeto