我已經爲jsf編寫了一個自定義組件。渲染器擴展com.sun.faces.renderkit.html_basic.ListboxRenderer。我的組件位於「javax.faces.SelectMany」-Family中。JSF自定義組件:如何獲取屬性<f:ajax />
在JSF頁面的代碼如下所示:
<tb:myMenu id="testId" value="#{valueForm.someValue}">
<f:selectItem />
<f:selectItems value="#{dao.getSomething()}" />
<f:ajax render=":myTestForm:myId"/>
</tb:myMenu>
我怎樣才能在我的渲染器渲染屬性的值?我只需要這個值,應該不會寫入我的組件(就像RenderKitUtils類一樣)
我現在的解決方案如下所示。它有效,但我不高興。
if (component instanceof ClientBehaviorHolder) {
Map<String, List<ClientBehavior>> behaviors = ((ClientBehaviorHolder)component).getClientBehaviors();
if (behaviors != null && behaviors.keySet().contains("valueChange")) {
for (ClientBehavior cb: behaviors.get("valueChange")) {
if (cb instanceof AjaxBehavior) {
System.out.println("AJAX: " + ((AjaxBehavior) cb).getRender());
}
}
}
}
好了,我想有可能是一個實用的方法,這是我看到didn't。 感謝反向檢查的東西;) – Lodger