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

发布于 2024-10-24 23:23:19 字数 1682 浏览 2 评论 0原文

我有一个带有验证器的简单 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

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

您看到解决方法了吗?

谢谢。

I have a simple inputText with a validator:

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

You may have noticed that I specified a validator: defaultFieldValidator and all works fine.

I now make a component to act like a wrapper for the inputText named: 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>

If I try now to call this component (with the same validator for beginning passed now through a parameter):

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

if fails with the following error:

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

So the problem is when sending the validator name to my custom component.

Do you see a work-around?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

调妓 2024-10-31 23:23:19

我最终

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

在我的 inputText 组件中使用

I've ended up using

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

inside my inputText component

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文