[英]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.