【发布时间】:2013-11-30 03:24:00
【问题描述】:
我在一个小项目中使用 JSF 2.0、Primefaces 和 Omnifaces,但我遇到了一些麻烦(或错误,我真的不知道)。
问题是:
我插入了一个班级并为此班级设置了一个课程(班级:“Course1”,课程:“Gambiarra”):
当我尝试编辑同一个课程时,CRUD 中的所有内容都正常,但 Course 的默认值是错误的。您可以等待,课程的正确默认值是“Gambiarra”,但这显示了“Técnico em Informática”:
我想解决这个问题,因为用户期望这个领域的默认课程,而不仅仅是列表中的第一个。以下是我的代码。
查看 - JSF:
<h:panelGrid styleClass="col-lg-10 center">
<label for="curso">Curso:</label>
<p:selectOneMenu id="curso" value="#{turmaMBean.selecionado.curso}" converter="omnifaces.SelectItemsConverter" style="margin-bottom: 15px;">
<f:selectItems value="#{turmaMBean.listaTodosCursos}" var="curso" itemLabel="#{curso.nome}" itemValue="#{curso}"/>
</p:selectOneMenu>
</h:panelGrid>
TurmaMBean:
(请注意,当用户单击数据表的一行时,会设置“Turma selecionado” - 设置没问题,在测试中 selecionado.getCurso() 给了我正确的 Curso)
private ArrayList<Curso> listaTodosCursos; // list of all courses
private Turma selecionado;
private ControleCurso controleCurso; // courseControl
public TurmaMBean() {
if (controleCurso == null) {
controleCurso = ControleCurso.getInstance();
}
if (listaTodosCursos == null){
listaTodosCursos = controleCurso.consulta();
}
}
// Getters and Setters
public ControleCurso getControleCurso() {
return controleCurso;
}
public void setControleCurso(ControleCurso controleCurso) {
this.controleCurso = controleCurso;
}
public Turma getSelecionado() {
return selecionado;
}
public void setSelecionado(Turma selecionado) {
this.selecionado = selecionado;
}
public ArrayList<Curso> getListaTodosCursos() {
return listaTodosCursos;
}
public void setListaTodosCursos(ArrayList<Curso> listaTodosCursos) {
this.listaTodosCursos = listaTodosCursos;
}
图尔玛:
public class Turma {
private int id;
private String nome;
private Curso curso;
public Turma() {
}
public Turma(int id, String nome){
this.id = id;
this.nome = nome;
}
public Turma(int id, String nome, Curso idCurso) {
this.id = id;
this.nome = nome;
this.curso = idCurso;
}
public Turma(String nome, Curso idCurso) {
this.nome = nome;
this.curso = idCurso;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Curso getCurso() {
return curso;
}
public void setCurso(Curso idCurso) {
this.curso = idCurso;
}
@Override
public String toString() {
return nome;
}
}
已经尝试过this answer,但我看不懂,所以这不能解决我的问题。
如果您需要其他信息,请告诉我,我会提供一切。
【问题讨论】:
标签: jsf jsf-2 primefaces omnifaces