我有以下的複合成分:有條件地呈現元素的屬性在複合組件
<?xml version="1.0" encoding="UTF-8"?>
<ui:component xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui"
xmlns:fn="http://java.sun.com/jsp/jstl/functions"
xmlns:composite="http://java.sun.com/jsf/composite">
<composite:interface>
<composite:attribute required="true" name="field" />
<composite:attribute required="true" name="value" />
<composite:attribute required="false" name="size"/>
</composite:interface>
<composite:implementation>
...
<div class="wrapper">
<h:inputText value="#{cc.attrs.value}"
id="#{field.id}"
rendered="#{field.rendered}"
size="#{cc.attrs.size}">
</h:inputText>
<h:messages for="#{field.id}" styleClass="errorMessage"/>
</div>
...
</composite:implementation>
</ui:component>
的問題是,當我使用該組件沒有設置其size
屬性,它仍然得到了呈現爲size=0
html輸入元素。
我想要的是僅當嵌套的h:inputText
的屬性具有有效值(例如非空)時才呈現它。或者,我想公開所有嵌套元素的屬性,如果他們沒有明確覆蓋。
怎麼可能?
請注意標記,複合組件不是自定義組件。另見http://stackoverflow.com/questions/5704620/what-is-the-difference-between-custom-components-and-composite-components – BalusC
感謝您的更正。我意識到這一點,但我有點粗心,也許我需要休息幾分鐘:S –