繁体   English   中英

在挂毯中选择名称不为id的

[英]Select in Tapestry with name not id

我正在使用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>

Java的:

        @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时,我得到了这个

但是,当点击“添加酒店”时,我不希望名称属性为:com.mycompany ...

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

您需要传递一个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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM