Jin*_*Jin 4 jsf el composite-component
我有一个JSF复合组件,在接口部分有一个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>
Run Code Online (Sandbox Code Playgroud)
现在我的问题是"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
Run Code Online (Sandbox Code Playgroud)
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2444 次 |
最近记录: |