如何为特定字段设置自定义消息

how to set custom message for specific field

您好,使用 JSF 1(不是 JSF 2)。

<h:inputText id="myElem"
         value="#{backingBean.myElem}"
         required="true"/>
<h:message id="myElemMsg" styleClass="errorMsg" for="myElem"/>

<h:inputText id="myElem2"
         value="#{backingBean.myElem2}"
         required="true"/>
<h:message id="myElem2Msg" styleClass="errorMsg" for="myElem2"/>

我的消息属性是:

javax.faces.component.UIInput.REQUIRED=A value is required.

现在,只要缺少任何内容,我就会得到一个值,但是我想要 myElem2 的自定义消息来表达其他内容。

使用 h:inputTextrequiredMessage 属性。

另见 http://docs.oracle.com/javaee/5/javaserverfaces/1.2/docs/tlddocs/h/inputText.html

我想这是一个重复的问题:)

我了解到您使用的是 JSF 1.0/1.1。然后你基本上有 2 个选项:

  1. 创建自定义验证器。

    <h:inputText id="myElem2" 
        value="#{backingBean.myElem2}"
        validator="customRequiredValidator" />
    

    其中您只需抛出一个 ValidatorException 并在其中包含所需的消息。

    if (isEmpty(value)) {
        throw new ValidatorException(new FacesMessage("Your message here"));
    }
    
  2. 或者,只需升级到 JSF 1.2。它引入了 requiredMessage 属性。

    <h:inputText id="myElem2" 
        value="#{backingBean.myElem2}"
        required="true" requiredMessage="Your message here" />