0
我试图更新JSF组件的styleClass,如果设置值符合某个条件。我可以通过对由某个Ajax事件触发的整个组件进行再处理来实现它。然而,所提供的事件仅在不合时宜的时间触发,即,当用户仍然与该组件交互时,由于重绘而导致中断。有条件地将“styleClass”应用于组件,而不会重新渲染
是否更新styleClass而不重绘的方法?
工作的代码段,但与不希望的行为:
<p:selectCheckboxMenu id="input" value="#{bean.value}">
<f:selectItems value="#{bean.options}" />
<f:attribute name="styleClass" value="#{bean.highlight(bean.value)}" />
<p:ajax event="toggleSelect" update="input" />
<p:ajax event="change" update="input" />
</p:selectCheckboxMenu>
而且支持bean:
@ManagedBean
@ViewScoped
public class Bean {
private List<String> value;
private Map<String, String> options;
public String highlight(Object value) {
return value == null || value instanceof Collection<?> && ((Collection<?>) value).isEmpty() ? "" : "ui-state-active";
}
/* getters & setters */
}