2011-07-20 44 views
3

我在JSF中顯示錯誤消息時停滯不前。我的要求如下:驗證消息顯示在頁面底部JSF - javax面臨developmentstage消息

我有一個用戶表單,用戶必須輸入名字,姓氏,用戶名和電子郵件地址等詳細信息。所有這些字段都是強制性的,在這些字段中,用戶名和電子郵件地址是唯一的。所以當用戶輸入所有字段時,如果他點擊保存,然後在後端,我必須檢查用戶名和電子郵件地址是否已經存在於數據庫中,如果存在,我必須在頁面頂部顯示錯誤消息,說「輸入的數據已經存在,請重新輸入「。

首字母和姓氏的驗證消息應顯示在每個字段的側面。我無法使用<h:messages>,因爲它一次顯示所有驗證消息。

所以我填充一個隱藏字段的形式使用以下代碼的消息:

context.addMessage("addUserErrorMessage", new FacesMessage("the data entered is already exists, please reenter again")); 

addUserErrorMessage是隱藏的表單字段中的ID。

但是當我在頁面的頂部,

<h:message for="addUserFormMessage"> 

顯示消息在 在頁面的底部,當我通過螢火檢查所顯示的消息,我發現下面的標籤填充

<ul id="javax_faces_developmentstage_messages" title="Project Stage[Development: Unhandled Messages"> 
    <li style="color:red;">the data entered is already exists, plese reenter again </li> 
</ul> 

我無法知道,爲什麼信息顯示在底部,因爲我寫了<h:message>頁面頂部的標籤。

任何人都可以幫助我嗎?

預先感謝

+0

是否有可能以某種方式使用''以前的實驗沒有完全從JSF文件中刪除? – adarshr

回答

2

所以我在使用以下碼的消息的形式填充一個隱藏字段:

context.addMessage("addUserErrorMessage", new FacesMessage("the data entered is already exists, please reenter again")); 

addUserErrorMessage是隱藏的表單字段中的ID。

addMessage()需要客戶端ID作爲第一個參數,而不是組件ID。客戶端ID應該看起來像formId:addUserErrorMessage。客戶端ID基本上是HTML DOM元素ID。在瀏覽器中打開該頁面,右鍵單擊它,查看源文件,找到隱藏的輸入並確定其id屬性。


作爲一個完全不同的(和更普遍使用的)的替代,只是不濫用一個隱藏的輸入,但只設置null作爲客戶端ID:

context.addMessage(null, new FacesMessage(message)); 

這樣的消息將被設置作爲全局消息,並且您可以使用<h:messages>globalOnly屬性僅顯示全局消息。

<h:messages globalOnly="true" />