【发布时间】:2011-11-08 06:05:15
【问题描述】:
我已经为 jsf 编写了一个自定义组件。渲染器扩展了 com.sun.faces.renderkit.html_basic.ListboxRenderer。我的组件在“javax.faces.SelectMany”-Family 中。
jsf-page中的代码如下:
<tb:myMenu id="testId" value="#{valueForm.someValue}">
<f:selectItem />
<f:selectItems value="#{dao.getSomething()}" />
<f:ajax render=":myTestForm:myId"/>
</tb:myMenu>
如何在我的渲染器中获取渲染属性的值?我只需要值,不应该向我的组件写入任何内容(就像 RenderKitUtils-class 那样)
我目前的解决方案如下所示。它有效,但我对此并不满意。
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());
}
}
}
}
【问题讨论】:
标签: java jsf jsf-2 components custom-component