Передача валидатора в пользовательский компонент, не удается - PullRequest
0 голосов
/ 21 марта 2011

У меня есть простой 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 голосов
/ 25 марта 2011

В итоге я использовал

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

внутри моего компонента inputText

...