在primefaces中选择/取消选择所有元素<p:selectcheckboxmenu>?</p:selectcheckboxmenu>

时间:2012-04-01 13:09:13

标签: javascript jsf-2 primefaces

我已经浏览了primefaces的文档,遗憾的是没有选项可以一次性选择p:selectCheckboxMenu组件的所有选项,就像使用Javascript一样。

有人可以建议如何使用Javascript或使用Backing Bean来完成它吗?

2 个答案:

答案 0 :(得分:1)

使用与通常方式的可用值相同的值来预设其值(就像对每个其他JSF输入组件所做的那样)。

基于PrimeFaces showcase example of <p:selectCheckboxMenu>,以下是它的外观:

package org.primefaces.examples.view;

import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FormBean implements Serializable {

    private List<String> selectedMovies;

    private Map<String,String> movies;

    public FormBean() {
        movies = new HashMap<String, String>();
        movies.put("Scarface", "Scarface");
        movies.put("Goodfellas", "Goodfellas");
        movies.put("Godfather", "Godfather");
        movies.put("Carlito's Way", "Carlito's Way");

        selectedMovies = new ArrayList<String>();
        selectedMovies.add("Scarface");
        selectedMovies.add("Goodfellas");
        selectedMovies.add("Godfather");
        selectedMovies.add("Carlito's Way");
    }

    public List<String> getSelectedMovies() {
        return selectedMovies;
    }
    public void setSelectedMovies(List<String> selectedMovies) {
        this.selectedMovies = selectedMovies;
    }

    public Map<String, String> getMovies() {
        return movies;
    }
}

请注意,selectedMovies已在bean的构造函数中准备好。当然,这可以基于Map movies更优雅地完成。这只是给你一个想法。

使用JavaScript执行此操作是不必要的。

答案 1 :(得分:0)

<label><input type="checkbox" name="" id="" class="someclass-selectall"/>choose all</label><br/>

<label><input type="checkbox" name="" id="" class="someclass"/>some text</label><br/>
<label><input type="checkbox" name="" id="" class="someclass"/>some text</label><br/>
<label><input type="checkbox" name="" id="" class="someclass"/>some text</label><br/>
<label><input type="checkbox" name="" id="" class="someclass"/>some text</label><br/>
<label><input type="checkbox" name="" id="" class="someclass"/>some text</label><br/>
<label><input type="checkbox" name="" id="" class="someclass"/>some text</label><br/>

<script type="text/javascript" src="../share/libs/jquery-1.7.min.js"></script>

<script type="text/javascript">
 // use jquery
 $(".someclass-selectall").click(function  (  ) {
    $("input:checkbox.someclass").attr ( "checked", this.checked );
 })
</script>

试试这个