2015-05-29 79 views
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 */ 
} 

回答

相关问题