在Tapestry中选择名称不是id

时间:2016-01-27 00:44:55

标签: java hibernate java-ee tapestry

我正在使用Tapestry中的select组件。我想在表单中选择一个对象,我希望它在选择的选项中显示名称,但它显示的是id。

TML:

        <t:beaneditform object="soba" exclude="idSobe" add="idHotel" >
         <p:idHotel>
        <t:label for="idHotel"/>:
         <t:select t:blankLabel="Odaberi Hotel" t:id="idHotel"  
          encoder="encoder" model="hoteli" value="idHotel"
        />
        </p:idHotel>
        </t:beaneditform>

爪哇:

        @Property
       private Soba onesoba;
         @Inject 
        private HotelDao hotelDao;
        @Property
         private Hotel idHotel;
         @Property
          @Persist
          private List<Hotel> hoteli;
         @Property
            private List<Soba>sobe;


      public ValueEncoder getEncoder() {
      return new ValueEncoder<Hotel>() {
       @Override
     public String toClient(Hotel v) {
       return String.valueOf(v.getIdHotel());
      }
      @Override
    public Hotel toValue(String string) {
      Hotel hot = hotelDao.getHotelById(Integer.parseInt(string));
       return hot;
       }

当我运行应用程序并想要选择一个obj时,我得到this

但是当点击“添加酒店”时我想要名称属性不是:com.mycompany ...

如果有人建议如何在选择组件中更改该属性,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您需要传递SelectModel,指定要显示的属性。

...
@Property
@Persist
private List<Hotel> hoteli;

@Inject
private SelectModelFactory smf;

public SelectModel getHoteliModel()
{
  return smf.create(hoteli, "name") ;
}
...

在您的.tml中,您将拥有:

<t:select t:blankLabel="Odaberi Hotel" t:id="idHotel"  
      encoder="encoder" model="hoteliModel" value="idHotel"