【问题标题】:How to change the default "Validation Error: Value is not valid" message?如何更改默认的“验证错误:值无效”消息?
【发布时间】:2013-02-19 15:38:58
【问题描述】:

以下是我可以在 Stack Overflow 上找到的 4 篇相关帖子:

在这些帖子中,发帖者不知道为什么会出现此错误消息。就我而言,我确实知道为什么会出现此错误,并且我想将默认的 “验证错误:值无效” 消息更改为 “这是我的消息” 。我怎样才能做到这一点?

PS1:我已经尝试过requiredMessagevalidatorMessageconverterMessage 属性,但在这种特殊情况下它们都没有被调用。

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


场景:

  1. 我有两个实体,例如雇主和雇员。
  2. 我创建了员工employee1
  3. 我想创建雇主employer1,并通过下拉列表将其链接到employee1
  4. 在提交雇主创建表格之前,我从数据库中删除了employee1
  5. 然后,我提交雇主创建表单:由于employee1 不再可用,因此该消息出现在下拉列表旁边。

这种行为是我所期望的,但我只是想将默认消息更改为另一个,更用户友好

【问题讨论】:

    标签: java jsf validation message default-value


    【解决方案1】:

    提供一个自定义转换器并将其作为转换器异常抛出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

    【讨论】:

    • 说实话,我希望你能看到我的问题,因为我打赌你可能已经找到了解决方案 ;) 这正是我想要的,非常感谢。
    【解决方案2】:

    所有库存 JSF 消息都在您的 JSF 分发包的 javax.faces 包中。您要查找的密钥是javax.faces.component.UISelectone.INVALID(或UISelectMany)。修改这个属性得到你想要的结果

    【讨论】:

    • 有没有办法根据下拉列表放置不同的消息?对于我给出的示例,我可能需要“该员工不再存在”,但对于另一个下拉列表,我可能需要另一条消息。
    • @sp00m 1. 尽量避免过多地弄乱该文件,这是一种俗气的设计。 2. 属性文件不包含逻辑,只是键值对,所以理论上,你可以在其中存储任何消息字符串。您必须实现一个验证器,然后保存根据任何条件选择正确消息的逻辑
    猜你喜欢
    • 1970-01-01
    • 2021-12-30
    • 2020-08-15
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多