在下面的代码(jsf页面)中,我显示了一些酒店信息:表格行,但我想将房间详细信息填入主表的其中一列中的表格。代码实际上更有意义。在标题为“房间”的列中,我想显示一个包含房间详细信息的表格。整个表使用名为“properHotelsList”的列表。在列表中,有几个mainVOs包含列属性中的详细信息。 roomList(包含roomVO)也在MainVO中。因此,我推测我应该能够做一个如下所示的新表,但给出错误说“未知属性'roomList'” 我可以做些什么来建立酒店与他们的房间?
<div class="Tbl" style="border-width: 2px; border-style: solid; margin: 2px; font-size: 20px; height: 442px; left: 22px; top: 46px; overflow: scroll; position: absolute; width: 1268px; z-index: 1">
<display:table class="its" id="hotelList" name="requestScope.DetailSelection.suitableHotelsList" style="border-width: 2px; border-style: solid;">
<display:setProperty name="basic.empty.showtable" value="false"/>
<display:setProperty
name="basic.msg.empty_list">Gösterilecek bir kayıt bulunamadı</display:setProperty>/>
<display:column
property="hotelName" style="font-size: 30px; width:200px; text-align:center;" title="Hotel Name"/>
<display:column property="hotelStars" style="font-size: 30px; width:100px; text-align:center;" title="Stars"/>
<display:column property="userRating" style="font-size: 30px; width:100px; text-align:center;" title="User Rating"/>
<display:column property="hotelSummary" style="font-size: 20px; width:500px; text-align:center;" title="Summary"/>
<display:column style="width:100px;" title="Hotel Details">
<a href="HotelDetailsPage.jsp?id=${hotelList.hotelID}&screenType='O'&initial='true'">
<ui:image style="height:80px; width:80px;" url="/resources/img2.JPG"/>
</a>
</display:column>
<display:column style="width:100px;" title="Rooms">
<display:table class="its" id="roomList" name="requestScope.DetailSelection.suitableHotelsList.roomList">
<display:column property="room_type" style="font-size: 10px; width:100px; text-align:center;" title="Room Type"/>
<display:column property="price_per_night" style="font-size: 10px; width:100px; text-align:center;" title="Price Per Night"/>
<display:column property="room_number" style="font-size: 10px; width:100px; text-align:center;" title="Room Number"/>
<display:column style="width:100px;" title="Hotel Details">
<a href="Reservations.jsp?id=${roomList.roomID}&screenType='O'&initial='true'">
<ui:image style="height:80px; width:80px;" url="/resources/img3.JPG"/>
</a>
</display:column>
</display:table>
</display:column>
</display:table>
</div>
答案 0 :(得分:2)
外围表格为id="hotelList"
。这意味着在迭代期间,标签允许您使用页面范围属性“hotelList”访问当前酒店列表。因此我将其命名为“酒店”,这将使其更加清晰。
您需要访问当前酒店的房间列表。您使用requestScope.DetailSelection.suitableHotelsList.roomList
执行此操作,这没有任何意义:酒店列表(类型java.util.List
,我猜)没有任何名为“roomList”的属性。相反,您想访问当前酒店的房间列表:hotel.roomList
(前提是您已按照上面建议将hotelList重命名为酒店)。
此外,嵌套表使用ID roomList
。与上面相同:将它命名为“房间”将不那么令人困惑。迭代中的当前对象是房间,而不是房间列表。
最后,另一个问题是id
属性还用于将ID HTML属性设置为内部HTML表。由于ID对于整个HTML页面应该是唯一的,并且您将有几个内部表,这将导致无效的HTML。
因此,您还应将htmlId
属性设置为唯一的属性,例如room${hotel_rowNum}
。有关代码参考,请参阅http://www.displaytag.org/1.2/displaytag/tagreference.html。