Jsf Primefaces datatable仅在一行中组合数据
我使用的是tomcat8和primefaces 5.1,代码如下:Jsf Primefaces datatable仅在一行中组合数据,jsf,primefaces,datatable,Jsf,Primefaces,Datatable,我使用的是tomcat8和primefaces 5.1,代码如下: <p:dataTable var="price" value="#{HOTEL.hotel}"> <p:column headerText="Тип стая"> <h:outputText value="Единична" /> <h:outputText value="Двойна" /> <h:outputText value="Апартамент" /> &
<p:dataTable var="price" value="#{HOTEL.hotel}">
<p:column headerText="Тип стая">
<h:outputText value="Единична" />
<h:outputText value="Двойна" />
<h:outputText value="Апартамент" />
<h:outputText value="Студио" />
</p:column>
<p:column headerText="Брой">
<h:outputText value="#{HOTEL.hotel.room_1}" />
<h:outputText value="#{HOTEL.hotel.room_2}" />
<h:outputText value="#{HOTEL.hotel.apartment}" />
<h:outputText value="#{HOTEL.hotel.studio}" />
</p:column>
<p:column headerText="Цена">
<h:outputText value="#{HOTEL.hotel.room_1_price}" />
<h:outputText value="#{HOTEL.hotel.room_2_price}" />
<h:outputText value="#{HOTEL.hotel.apartment_price}" />
<h:outputText value="#{HOTEL.hotel.studio_price}" />
</p:column>
</p:dataTable>
当使用上面的代码时,我只得到一行的表和一行中的所有数据,而不是我认为的每个outputText的不同行。我想要4行和其中的适当数据。我希望第一列与硬编码的值保持一致,然后为它们中的每一列提供来自数据库的相应值。您以错误的方式使用了
dataTable
组件。它只是在表格视图中显示数据,您要做的唯一一件事是向它提供模型对象的集合
,并明确指出模型实例中的哪个属性应该显示在某一列下
此外,我相信您的模型中存在一些问题,即房间类型(“单人房”、“双人房”等)应该是房间定义的一部分,但不能在数据表
列中硬编码。房间的价格也是如此。此外,酒店
应包括房间集合
因此,您可以引入一个名为Room
的类,它将保存酒店房间的属性
enum RoomType {
SINGLE, DOUBLE, APPARTMENT, STUDIO;
}
class Room {
private RoomType type;
private Double price;
//constructors, accessors, etc.
}
然后,在hotel
bean中,您应该拥有房间对象的集合,每个对象都将提供有关房间价格和类型的信息。此外,提供给定类型房间的可用性将是酒店的责任,这就是为什么它应该公开更多方法的原因。比如:
public class Hotel {
private List<Room> rooms;
public Integer checkAvailabilityFor(RoomType type) {
//for example
switch (type) {
case SINGLE: { return 5; }
case DOUBLE: { return 2; }
case APPARTMENT : { return 1; }
case STUDIO: { return 3; }
}
}
//accessor(s) for the rooms list
}
<p:dataTable var="room" value="#{HOTEL.hotel.rooms}">
<p:column headerText="Type">
<p:outputText value="#{room.type}" />
</p:column>
<p:column headerText="Rooms available">
<p:outputText value="#{HOTEL.hotel.checkAvailabilityFor(room.type)}" />
</p:column>
<p:column headerText="Price">
<p:column value="#{room.price}" />
</p:column>
</p:dataTable>
我强烈建议您暂停当前的项目,花时间阅读一本理智的JSF书籍/教程,以便正确掌握基本概念。是的,我知道,但我有一个截止日期,因为这是大学的项目。在这里发帖之前,我总是通过网络阅读。我真的很感谢像你这样的人的帮助。非常感谢你。