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 */
}