显示字符串 <f: SelectItems> JSF
Show String <f: SelectItems> JSF
我想在列表中显示存储在数据库中的建筑物的名称,使用 h:selectOneMenu f:SelectItems。
我执行此操作的 .xhtml 的一部分是:
<h:form id="form-lista">
<h:selectOneMenu value="#{controller.edificioSeleccionado}">
<f:selectItems value="#{controller.edificios}" />
</h:selectOneMenu>
</h:form>
Bean控制器有以下代码:
@ManagedBean
public class BeanEdificios implements Serializable {
private static final long serialVersionUID = 55555L;
private Edificio[] edificios = null;
private String edificioSeleccionado = "";
//private Edificio EdificioSeleccionado = null;
public Edificio[] getEdificios () {
listado();
return(edificios);
}
public String getEdificioSeleccionado() {
return edificioSeleccionado;
}
public void setEdificioSeleccionado(String edificioSeleccionado) {
this.edificioSeleccionado = edificioSeleccionado;
}
public String listado() {
EdificioJdbcDao jdbc = new EdificioJdbcDao();
try {
// De esta forma le damos informaciónn a toArray para poder hacer el casting a Edificio[]
edificios = (Edificio [])jdbc.getEdificios().toArray(new Edificio[0]);
return "exito";
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
而那种模型建筑有这些字段:
public class Edificio {
private int id_edificio;
private String nombre;
private boolean reservado;
public Edificio(int id_edificio, String nombre, boolean reservado) {
this.id_edificio = id_edificio;
this.nombre = nombre;
this.reservado = reservado;
}
public Edificio() {
}
public int getIdEdificio() {
return id_edificio;
}
public void setIdEdificio(int id_edificio) {
this.id_edificio = id_edificio;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public boolean isReservado() {
return reservado;
}
public void setReservado(boolean reservado) {
this.reservado = reservado;
}
}
通过这样做,列表使我成为数据库中记录的名称,
我不想要的东西:
大厦@78bb1ce9
大厦@52cd1c5e
Edificio@32ac1d32
我想显示建筑物的名称字段(或 ID)。我考虑过将 f: SelectItems 的值属性放入这样的内容中,但出现错误。我怎么能?
<f:selectItems value="#{controller.edificios.nombre}" />
使用
private SelectItem[] edificios = null;
而不是
private Edificio[] edificios = null;
在 SelectItem 中,您可以像这样输入任何内容:
new SelectItem ("id","nombre");
第一个参数是项目值,第二个是项目标签。
我想在列表中显示存储在数据库中的建筑物的名称,使用 h:selectOneMenu f:SelectItems。 我执行此操作的 .xhtml 的一部分是:
<h:form id="form-lista">
<h:selectOneMenu value="#{controller.edificioSeleccionado}">
<f:selectItems value="#{controller.edificios}" />
</h:selectOneMenu>
</h:form>
Bean控制器有以下代码:
@ManagedBean
public class BeanEdificios implements Serializable {
private static final long serialVersionUID = 55555L;
private Edificio[] edificios = null;
private String edificioSeleccionado = "";
//private Edificio EdificioSeleccionado = null;
public Edificio[] getEdificios () {
listado();
return(edificios);
}
public String getEdificioSeleccionado() {
return edificioSeleccionado;
}
public void setEdificioSeleccionado(String edificioSeleccionado) {
this.edificioSeleccionado = edificioSeleccionado;
}
public String listado() {
EdificioJdbcDao jdbc = new EdificioJdbcDao();
try {
// De esta forma le damos informaciónn a toArray para poder hacer el casting a Edificio[]
edificios = (Edificio [])jdbc.getEdificios().toArray(new Edificio[0]);
return "exito";
} catch (Exception e) {
e.printStackTrace();
return "error";
}
}
而那种模型建筑有这些字段:
public class Edificio {
private int id_edificio;
private String nombre;
private boolean reservado;
public Edificio(int id_edificio, String nombre, boolean reservado) {
this.id_edificio = id_edificio;
this.nombre = nombre;
this.reservado = reservado;
}
public Edificio() {
}
public int getIdEdificio() {
return id_edificio;
}
public void setIdEdificio(int id_edificio) {
this.id_edificio = id_edificio;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public boolean isReservado() {
return reservado;
}
public void setReservado(boolean reservado) {
this.reservado = reservado;
}
}
通过这样做,列表使我成为数据库中记录的名称, 我不想要的东西:
大厦@78bb1ce9 大厦@52cd1c5e Edificio@32ac1d32
我想显示建筑物的名称字段(或 ID)。我考虑过将 f: SelectItems 的值属性放入这样的内容中,但出现错误。我怎么能?
<f:selectItems value="#{controller.edificios.nombre}" />
使用
private SelectItem[] edificios = null;
而不是
private Edificio[] edificios = null;
在 SelectItem 中,您可以像这样输入任何内容:
new SelectItem ("id","nombre");
第一个参数是项目值,第二个是项目标签。