【发布时间】:2012-04-01 13:09:13
【问题描述】:
我浏览了 primefaces 的文档,遗憾的是没有选项可以像使用 Javascript 一样一次性选择 p:selectCheckboxMenu 组件的所有选项。
谁能建议如何使用 Javascript 或使用 Backing Bean 来完成?
【问题讨论】:
标签: javascript jsf-2 primefaces
我浏览了 primefaces 的文档,遗憾的是没有选项可以像使用 Javascript 一样一次性选择 p:selectCheckboxMenu 组件的所有选项。
谁能建议如何使用 Javascript 或使用 Backing Bean 来完成?
【问题讨论】:
标签: javascript jsf-2 primefaces
只需按照通常的方式将其值预设为与可用值相同的值(就像您对每个其他 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 进行此操作。
【讨论】:
<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>
试试这个
【讨论】: