将验证器传递给自定义组件失败

时间:2011-03-21 12:11:00

标签: validation jsf facelets icefaces

我有一个带验证器的简单inputText:

<ice:inputText
            id="test"
            value="#{applicationBean.selectedApplication['name']}"
            validator="defaultFieldValidator"
            required="true"></ice:inputText>
        <ice:message
            styleClass="graValidationMessage graNotRequired"
            for="test" />

你可能已经注意到我指定了一个验证器:defaultFieldValidator,一切正常。

我现在使一个组件像inputText的包装器一样命名为:inputTextValidated:

<ice:inputText
        id="#{id}#{required}"
        value="#{bean[field]}"
        rendered="#{rendered}"
        styleClass="#{styleClass} #{not required ? 'graNotRequired':''}"
        style="width: #{width};"
        partialSubmit="#{partialSubmit}"
        disabled="#{disabled}"
        required="#{required}"
        validator="#{validatorClass}">
    </ice:inputText>

如果我现在尝试调用此组件(使用相同的验证器开始通过参数传递):

<gra:inputTextValidated
                    id="inputText"
                    bean="#{applicationBean.selectedApplication}"
                    field="#{fieldValue}"
                    validatorClass="defaultFieldValidator"
                    renderLabel="false"
                    required="true"
                    disabled="false"
                    width="90%"
                    height="#{secondTabComponentsHeight}">
                </gra:inputTextValidated>

如果失败并出现以下错误:

 Identity 'validatorClass' does not reference a MethodExpression instance, returned type: java.lang.String

所以问题是将验证器名称发送到我的自定义组件时。

你看到了解决方法吗?

感谢。

1 个答案:

答案 0 :(得分:0)

我最终使用了

<f:validatorId validatorId="#{validatorClass}"/>

在我的inputText组件