2013-02-19 143 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

相关问题