Я использую JSF 2.0, PrimeFaces и OmniFaces.h: selectManyCheckbox с omnifaces.SelectItemsConverter не предварительно выбирает элементы
У меня есть 2 диалога с <h:selectManyCheckbox>
. Первый диалог создает новый Course
:
В Disciplina
s представлены как:
<h:selectManyCheckbox id="disciplinas"
value="#{cursoMBean.listaDisciplinasDoCurso}"
converter="omnifaces.SelectItemsConverter">
<f:selectItems value="#{cursoMBean.listaTodasDisciplinas}"
var="disciplina" itemValue="#{disciplina}"
itemLabel="#{disciplina.nome}" />
</h:selectManyCheckbox>
Это прекрасно работает. Когда я выберу некоторые дисциплины и отправлю форму, то новый Course
с выбранным Discipline
s правильно вставлен в БД.
Однако, когда я пытаюсь восстановить существующий Course
из БД, сохраненные Discipline
s не будут предварительно выбраны.
Код тот же:
<h:selectManyCheckbox id="disciplinas"
value="#{cursoMBean.listaDisciplinasDoCurso}"
converter="omnifaces.SelectItemsConverter">
<f:selectItems value="#{cursoMBean.listaTodasDisciplinas}"
var="disciplina" itemValue="#{disciplina}"
itemLabel="#{disciplina.nome}" />
</h:selectManyCheckbox>
Вот основа боб:
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)? – ppawel
Несомненно, подождите, я обновлю вопрос – Paladini
Вопрос обновлен! :) – Paladini