2015-06-06 2 views
0

Я хочу показать в списке, что имена зданий хранятся в базе данных, используя h: selectOneMenu f: SelectItems. Часть .xhtml где я сделать это:Показать строку <f: SelectItems> JSF

<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 Эдифисио @ 32ac1d32

Я хочу, чтобы показать имя поля (или идентификатор) здания. Я подумал о том, чтобы вставить атрибут value f: SelectItems что-то вроде этого, но я получаю ошибку. Как я мог?

<f:selectItems value="#{controller.edificios.nombre}" /> 

ответ

0

Использование

private SelectItem[] edificios = null; 

вместо

private Edificio[] edificios = null; 

и внутри SelectItem вы можете положить все, что вы хотите, как это:

new SelectItem ("id","nombre"); 

первых пары является значение элемента, и второй - метка элемента.

Смежные вопросы