使用Omniface的Components #includeCompositeComponent
動態創建組合組件時,是否可以傳遞屬性值(例如屬性myValue
),以便它可用於複合材料上的預渲染事件?Omnifaces組件#includeCompositeComponent設置屬性值
<composite:interface>
<composite:attribute name="myValue" required="true" />
</composite:interface>
<composite:implementation>
<!-- this works! -->
<h:outputText value="#{cc.attrs.myValue}" />
<!-- this doesn't execute -->
<f:event id="eventId"
type="javax.faces.event.PreRenderComponentEvent"
listener="#{bean.someAction(cc.attrs.myValue)}" />
<!-- stuff -->
</composite:implementation>
不過,我能夠訪問myValue
在XHTML(可通過#{cc.attrs.myValue}
),但它不適用於預渲染(我以前UIComponent#getAttributes
指定myValue
的價值)。
編輯:如果該屬性也可用於@PostConstruct
(通過託管屬性),它也可以。
'setValueExpression'是否將複合屬性與bean中的值綁定('bean.myValue')?不過,要嘗試一下。謝謝 – nuno 2014-10-10 14:51:26
它和''具有完全相同的效果,而'getAttribute()'方法與''只要它是一個'String'。 –
BalusC
2014-10-10 14:55:03
經過仔細閱讀後,我猜'setValueExpression'只是從另一個bean獲取值。我對嗎? – nuno 2014-10-10 14:55:05