我正在使用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 ...
如果有人建议如何在选择组件中更改该属性,我将不胜感激。
答案 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"