2
我正在實現一個JSF組件,並需要有條件地添加一些屬性。這個問題類似於之前的JSF: p:dataTable with f:attribute results in "argument type mismatch" error,但是有完全不同的錯誤信息,所以我提出了一個新問題。JSF複合:屬性與f:屬性轉換錯誤
<composite:interface>
<composite:attribute name="filter" required="false" default="false"
type="java.lang.Boolean"/>
<composite:attribute name="rows" required="false" default="15"
type="java.lang.Integer"/>
...
</composite:interface>
<composite:implementation>
<p:dataTable ivar="p" value="#{cc.attrs.dm}">
<c:if test="#{cc.attrs.filter}">
<f:attribute name="paginator" value="#{true}"/>
<f:attribute name="rows" value="#{cc.attrs.rows}"/>
</c:if>
...
<p:dataTable>
</composite:implementation>
這會導致錯誤java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
。即使我手動設置此,我得到的錯誤:
<f:attribute name="rows" value="15"/> ... argument type mismatch
<f:attribute name="rows" value="#{15}"/> ... java.lang.Long cannot be cast
to java.lang.Integer
如果我直接添加屬性,沒有例外,正確的行數diplayed:
<p:dataTable var="p" value="#{cc.attrs.dm}" rows="#{cc.attrs.rows}">
謝謝,這是一個合理的解決方法:-) – Thor
不客氣。 – BalusC