为什么复合组件要“渲染”?属性抛出 IllegalArgument 异常?

发布于 2024-12-15 17:21:00 字数 503 浏览 2 评论 0原文

我创建了一个如下所示的复合组件:

<cc:interface>        
    <cc:attribute name="value" 
                  required="true" />
    <cc:attribute name="rendered"
                  displayName="True to render"
                  default="true" />
</cc:interface>

当我调用该组件时,我得到一个 IllegalArgumentException。我可以将渲染名称更改为其他名称(例如doIt),然后它就可以工作了。

rendered 属性是否以某种方式保留?我希望我的复合组件看起来像“常规”JSF 组件。

这是莫贾拉的。

I create a composite component like this:

<cc:interface>        
    <cc:attribute name="value" 
                  required="true" />
    <cc:attribute name="rendered"
                  displayName="True to render"
                  default="true" />
</cc:interface>

When I invoke this component, I get an IllegalArgumentException. I can changed the rendered name to something else (like doIt) and then it works.

Is the rendered attribute reserved somehow? I want my composite component to look like "regular" JSF components.

This is with Mojarra.

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

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

发布评论

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

评论(1

阿楠 2024-12-22 17:21:00

复合组件扩展 UINamingContainer< /a> 依次扩展 UIComponentBase已经定义了idrendered 属性。您不需要自己指定它们。只需删除 。如果您在复合组件标记上指定 rendered 属性,那么它将被解释并应用于复合组件本身。

如果您打算渲染组合的特定子级,那么最好发明一个不同的属性名称。例如,renderSomeChild

Composite components extend UINamingContainer which in turn extend UIComponentBase which in turn already definies the id and rendered attributes. You don't need to specify them yourself. Just remove the <cc:attribute name="rendered">. If you specify the rendered attribute on the composite component tag, then it'll be interpreted and applied on the composite component itself.

If you intend to render specific children of the composite, then better invent a different attribute name. For example, renderSomeChild.

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