2013-02-19 177 views
1

下面是4個相關的帖子我能找到的堆棧溢出:如何更改默認的「驗證錯誤:值無效」消息?

在這些帖子中,海報不知道爲什麼他們有這個錯誤信息。在我的情況,我知道爲什麼我有這個錯誤,我想改變默認「驗證錯誤:值是無效的」消息讓我們說「這是我的消息」。我怎麼能做到這一點?

PS1:我已經嘗試過了requiredMessagevalidatorMessageconverterMessage屬性,但它們都沒有被調用在這種特殊情況下。

PS2:我使用的是RichFaces 4.1.0,所以我使用的下拉列表是rich:select


場景:

  1. 我有兩個實體,例如僱主和僱員。
  2. 我創建員工employee1
  3. 我想創建僱主employer1,並通過下拉列表將其鏈接到employee1
  4. 在提交僱主創建表格之前,我從數據庫中刪除了employee1
  5. 然後,我提交僱主創建表單:由於employee1不可用,所述消息出現在下拉列表旁邊。

此行爲是一個我所料,但我只是想改變默認的消息到另一個,更用戶友好

回答

2

提供自定義轉換器並將其作爲轉換器異常在getAsObject()中拋出。

基本上,

@Override 
public Object getAsObject(FacesContext context, UIComponent component, String submittedValue) { 
    if (submittedValue == null || submittedValue.isEmpty()) { 
     return null; 
    } 

    Employee employee = findEmployeeInDatabase(submittedValue); 

    if (employee == null) { 
     throw new ConverterException("Sorry, unknown employee."); 
    } 
    else { 
     return employee; 
    } 
} 

注意,這也使您可以使用converterMessage

+0

說實話,我希望你會看到我的問題,因爲我敢打賭你可能有解決方案';)'這正是我正在尋找,非常感謝。 – sp00m 2013-02-19 17:36:08

+0

不客氣。 – BalusC 2013-02-19 17:51:28

2

所有庫存JSF消息都在您的JSF Distribution的javax.faces包中。你正在尋找的是關鍵javax.faces.component.UISelectone.INVALID(或UISelectMany)。修改此屬性以獲得您想要的結果

+0

有什麼辦法根據下拉列表放置不同的消息?對於我給出的示例,我可能需要*「員工不再存在」*,但對於另一個下拉列表,我可能需要另一條消息。 – sp00m 2013-02-19 16:05:44

+0

@ sp00m 1。儘量避免與該文件混淆太多,這是俗氣的設計。 2.屬性文件不包含邏輯,只是鍵值對,因此理論上可以在其中存儲任何消息字符串。你必須實現一個驗證器,然後根據任何條件持有選擇正確消息的邏輯 – kolossus 2013-02-19 16:09:19

相關問題