1

我想用数据库中的值填充<p:selectOneMenu>a String。到目前为止,这就是我得到的(对葡萄牙语代码感到抱歉):

<p:selectOneMenu value="#{onibusMB.nomeTransportadora}">
    <f:selectItem itemLabel="" itemValue="" />
    <f:selectItems value="#{onibusMB.transportadoras}" var="transportadora" itemValue="#{transportadora}"/>
</p:selectOneMenu>

我的豆子在哪里:

@Named
@RequestScoped
public class OnibusMB implements Serializable {

    private List<Transportadora> transportadoras;
    private String nomeTransportadora;
    /*getter, setter, etc

}

我的实体是:

@Entity
@Table(name = "TRANSPORTADORA")
public class Transportadora implements AbstractEntity {

    private String nome;

}

我尝试了一些改变,但没有一个奏效。标签始终显示:

com.ezpass.model.Transportadora@2ce4a0c2

如何显示标签中的nome属性?Transportdora

4

1 回答 1

1

你忘了设置itemLabel属性。

<f:selectItems ... itemLabel="#{transportadora.nome}" />

itemValue仅设置实际项目值,而不是项目标签。项目值是从客户端提交到服务器的内容。项目标签是向世界展示的内容。如果项目标签不存在,则默认显示项目值。但是由于它是一个复杂的实体并且您没有指定任何转换器,所以它默认为类的toString()结果Transportadora

也可以看看:


与具体问题无关,您可能还想设置itemValue为与

<f:selectItems ... itemValue="#{transportadora.nome}" />

因为您的属性是 a String,而不是 a Transportdora。您(阅读:JSF)不能Transportdora在属性中设置对象String。否则,您需要将其更改为#{onibusMB.transportadora}并提供转换器。

于 2013-09-20T14:10:35.083 回答