2016-10-06 37 views
2

我與JSF 2.2工作,我想在未來alert消息(圖)不顯示當用戶選擇的"Seleccione..."消息:如何將f:selectItem與消息「select ...」一起添加到h:selectOneMenu(JSF)對象中?

enter image description here

[SERVERERROR:類javax.faces.component.UpdateModelException不能轉換Seleccione ...類型java.lang.String類的類modelo.entidades.Equipo]

我Bean是:

@ManagedBean 
@SessionScoped 
public class Bean{ 

    private String message; 
    private Equipo equipoSelected; 
    private List<Equipo> equipos; 

    public Bean() { 
    } 

    @PostConstruct 
    public void init(){ 
     message = "Seleccione..."; 
     equipos = new ArrayList<Equipo>(); 
     equipos.add(new Equipo(/*....*/)); 
     equipos.add(new Equipo(/*....*/)); 
     equipos.add(new Equipo(/*....*/)); 
     equipoSelected = new Equipo(); 
    } 

    public void updateSelected(){ 
     //... 
    } 

    public setMessage(String message){ 
     this.message = message; 
    } 

    public String getMessage(){ 
     return message; 
    } 

    public void setEquipos(List<Equipo> equipos){ 
     this.equipos = equipos; 
    } 

    public List<Equipo> getEquipos(){ 
     return equipos; 
    } 
    public void setEquipoSelected(Equipo equipoSelected){ 
     this.equipoSelected = equipoSelected; 
    } 

    public Equipo getEquipoSelected(){ 
     return equipoSelected; 
    } 



} 

和xhtml代碼是:

<h:form> 
    <h:selectOneMenu value="#{bean.equipoSelected}"> 
     <f:selectItem itemValue = "#{null}" itemLabel="#{bean.message}"/> 
     <f:selectItems value="#{bean.equipos}" var="equipo" itemLabel="#{equipo.name}" itemValue="#{equipo}"/> 
     <f:ajax event="change" listener="#{bean.updateSelected}" render="@form" execute="@form"/> 
    </h:selectOneMenu> 
</h:form> 

謝謝!

+0

如果你刪除該行'發生的'? – thatsIch

+0

我猜主要問題是缺少轉換器,但你說得對,'null'值總是容易出錯,所以我也建議用其他東西替換它。 –

回答

0

您正在Java bean中使用Equipo類型的對象,但JSF組件只能處理字符串。你可以使用轉換器來解決這個問題。這是對converters in general的一個很好的解釋。此StackOverflow question具有專門針對JSF(包含和不包含PrimeFaces)的示例。

您可能還想採用OmniFaces的轉換器。這是添加另一個庫,但在此之後,轉換器「自動」爲您做所有事情,幾乎不需要額外的努力。

相關問題