gpt4 book ai didi

JSF 2 复合组件 EL 类型转换错误

转载 作者:行者123 更新时间:2023-12-05 00:03:56 27 4
gpt4 key购买 nike

我有一个 JSF 复合组件,它在接口(interface)部分有一个 EL 表达式,代码片段如下。

<cc:interface>
<cc:attribute name="label" type="java.lang.String"/>
<cc:attribute name="labelRendered" default="#{cc.attrs.label ne null}"/>
</cc:interface>
<cc:implementation>
<h:outputText rendered="#{cc.attrs.labelRendered}" value="#{cc.attrs.label}"/>
</cc:implementation>

现在我的问题是 "default="#{cc.attrs.label ne null}"给出了一个错误。
java.lang.IllegalArgumentException: Cannot convert /resources/cc/label.xhtml @20,85 default="#{cc.attrs.label != null}" of type class com.sun.faces.facelets.el.TagValueExpression to class java.lang.Boolean

我正在使用 JSF 2.0.4、EL 2.1、WAS 7

最佳答案

#{cc.attrs}仅在 <cc:implementation> 内可用.

我建议将其重写如下:

<cc:interface>
<cc:attribute name="label" type="java.lang.String"/>
<cc:attribute name="labelRendered" type="java.lang.Boolean" />
</cc:interface>
<cc:implementation>
<ui:param name="labelRendered" value="#{empty cc.attrs.labelRendered ? not empty cc.attrs.label : cc.attrs.labelRendered}" />
...
<h:outputText rendered="#{labelRendered}" value="#{cc.attrs.label}"/>
</cc:implementation>

关于JSF 2 复合组件 EL 类型转换错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6260244/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com