2016-01-15 56 views
1

我想一個selectManyCheckbox的複選框設置爲選中狀態,如果條件爲真 「#{} myBean.isCondition」 「全選」:如何落實selectManyCheckbox

MyBean.java

public class MyBean{ 
    private boolean isCondition; 
    ... 

    public boolean isCondition{ 
     return isCondition; 
    } 
    ... 
} 

my_page.jspx:

<h:selectManyCheckbox 
    layout="pageDirection" 
    label="#{messages['numsTelephone.label']}" 
    value="#{listSelected}"> 
    <s:selectItems var="clientTelephone" 
       value="#{list}" 
       label="#{clientTelephone}" /> 
</h:selectManyCheckbox> 

我需要知道它是否存在類似

checked = "#{myBean.isCondition}" 

,我可以添加在我的selectManyCheckbox集團?或者我應該使用JavaScript?

任何其他解決方案也是受歡迎的。

我的另一個問題是如何設置myBean.isCondition爲true,如果選中複選框?

感謝,

回答

1

使用<f:ajax>在「全選」複選框,然後執行在偵聽器方法的選擇工作,然後重新呈現複選框。

開球例如:

<h:form> 
    <h:selectBooleanCheckbox value="#{bean.selectAll}"> 
     <f:ajax listener="#{bean.onSelectAll}" render="items" /> 
    </h:selectBooleanCheckbox> 
    <h:selectManyCheckbox id="items" value="#{bean.selectedItems}"> 
     <f:selectItems value="#{bean.availableItems}" /> 
    </h:selectManyCheckbox> 
</h:form> 

@Named 
@ViewScoped 
public class Bean implements Serializable { 

    private boolean selectAll; // +getter +setter 
    private List<String> selectedItems; // +getter +setter 
    private Map<String, String> availableItems; // +getter (no setter necessary) 

    @PostConstruct 
    public void init() { 
     availableItems = new LinkedHashMap<String, String>(); 
     availableItems.put("Foo label", "foo"); 
     availableItems.put("Bar label", "bar"); 
     availableItems.put("Baz label", "baz"); 
    } 

    public void onSelectAll() { 
     selectedItems = selectAll ? new ArrayList<>(availableItems.values()) : null; 
    } 

    // ... 
}