使用display:table in display:table column?

时间:2012-01-06 08:54:18

标签: jsp displaytag

在下面的代码(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>/&gt;
                            <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}&amp;screenType='O'&amp;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}&amp;screenType='O'&amp;initial='true'">
                                    <ui:image style="height:80px; width:80px;" url="/resources/img3.JPG"/>
                                </a>
                                </display:column>
                                </display:table>
                            </display:column>
                        </display:table>
                    </div>

1 个答案:

答案 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