【发布时间】:2013-12-02 11:06:58
【问题描述】:
我正在使用JSF 2.0、PrimeFaces 和OmniFaces。
我有 2 个与 <h:selectManyCheckbox> 的对话。第一个对话框创建一个新的Course:
Disciplinas 显示为:
<h:selectManyCheckbox id="disciplinas"
value="#{cursoMBean.listaDisciplinasDoCurso}"
converter="omnifaces.SelectItemsConverter">
<f:selectItems value="#{cursoMBean.listaTodasDisciplinas}"
var="disciplina" itemValue="#{disciplina}"
itemLabel="#{disciplina.nome}" />
</h:selectManyCheckbox>
这很好用。当我选择一些学科并提交表单时,带有所选Disciplines 的新Course 将正确插入数据库中。
但是,当我尝试从数据库中检索现有的 Course 时,未预先选择保存的 Disciplines。
代码相同:
<h:selectManyCheckbox id="disciplinas"
value="#{cursoMBean.listaDisciplinasDoCurso}"
converter="omnifaces.SelectItemsConverter">
<f:selectItems value="#{cursoMBean.listaTodasDisciplinas}"
var="disciplina" itemValue="#{disciplina}"
itemLabel="#{disciplina.nome}" />
</h:selectManyCheckbox>
这是支持 bean:
private ArrayList<Disciplina> listaTodasDisciplinas;
private ArrayList<Disciplina> listaDisciplinasDoCurso;
public CursoMBean() {
if (listaTodasDisciplinas == null) {
listaTodasDisciplinas = controleDisciplina.consulta();
}
if (listaDisciplinasDoCurso == null) {
listaDisciplinasDoCurso = new ArrayList<Disciplina>();
}
}
// When user selects one Course to edit, this method is called:
public void setSelecionado(Curso selecionado) {
this.selecionado = selecionado;
if (selecionado != null) {
listaTodasDisciplinas = controleDisciplina.consulta();
listaDisciplinasDoCurso = controleCurso.listaDisciplinasAssociadas(selecionado);
}
}
这是Disciplina 实体:
public class Disciplina {
private int id;
private String nome;
public Disciplina() {
}
public Disciplina(int id, String nome) {
this.id = id;
this.nome = nome;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
if (!(nome.isEmpty() || nome == " " || nome == " ")){
this.nome = nome;
}
}
}
这是怎么引起的,我该如何解决?
【问题讨论】:
-
您能否也显示您的实体类 (Disciplina) 的代码?
-
好的,等一下,我会更新问题
标签: jsf jsf-2 omnifaces selectmanycheckbox