如何在JSP上显示带有动态列标题的列表列表?
下面是我的代码,
class Entity
{
private int id;
private String entityName;
private List<Property> properties;
// other properties and getters and setters
}
class Property
{
private int id;
private String propertyName;
private String propertyValue;
// other properties and getters and setters
}
List<Entity> entities = new ArrayList<Entity>();
// ---- Entity 1
Entity entity1= new Entity();
entity1 . setEntityName("Person");
Property property1 = new Property();
property1 .setPropertyName("FirstName");
property1 .setPropertyValue("Peter");
Property property2 = new Property();
property2 .setPropertyName("LastName");
property2 .setPropertyValue("Pan");
Property property3 = new Property();
property3 .setPropertyName("Age");
property3 .setPropertyValue("28");
entity1.getProperties().add(property1);
entity1.getProperties().add(property2);
entity1.getProperties().add(property3);
entities.add(entity1);
// ---- Entity 2
Entity entity2= new Entity();
entity2 . setEntityName("Location");
Property property1 = new Property();
property1 .setPropertyName("Address");
property1 .setPropertyValue("302 New york Street");
Property property2 = new Property();
property2 .setPropertyName("City");
property2 .setPropertyValue("New york");
Property property3 = new Property();
property3 .setPropertyName("Country");
property3 .setPropertyValue("US");
entity2.getProperties().add(property1);
entity2.getProperties().add(property2);
entity2.getProperties().add(property3);
entities.add(entity2);
我需要在 JSP 上显示它,如下所示。
Person
Firstname LastName Age
Peter Pan 28
Van helsing 50
Tom Williamson 35
Location
Address City Country
302 New York Street New York US
Highway Street Londona UK
我遇到的问题是每个实体都有不同的属性(属性和名称的数量各不相同)。
我对每个迭代使用 JSTL c。请帮我。
编辑 1:-
对于单个列表,我会执行如下操作。
<tr>
<th>Heading 1</th>
<th>Heading 2</th>
<th>Heading 3</th>
</tr>
<tr>
<c:forEach items="${list}" var="item">
<td>${item.property1}</td>
<td>${item.property2}</td>
<td>${item.property3}</td>
</c:forEach>
</tr>
如果你看到上面我的标题没有迭代。但就我而言,我会将我的标题放在列表本身中。
Below is my code
class Entity
{
private int id;
private String entityName;
private List<Property> properties;
// other properties and getters and setters
}
class Property
{
private int id;
private String propertyName;
private String propertyValue;
// other properties and getters and setters
}
List<Entity> entities = new ArrayList<Entity>();
// ---- Entity 1
Entity entity1= new Entity();
entity1 . setEntityName("Person");
Property property1 = new Property();
property1 .setPropertyName("FirstName");
property1 .setPropertyValue("Peter");
Property property2 = new Property();
property2 .setPropertyName("LastName");
property2 .setPropertyValue("Pan");
Property property3 = new Property();
property3 .setPropertyName("Age");
property3 .setPropertyValue("28");
entity1.getProperties().add(property1);
entity1.getProperties().add(property2);
entity1.getProperties().add(property3);
entities.add(entity1);
// ---- Entity 2
Entity entity2= new Entity();
entity2 . setEntityName("Location");
Property property1 = new Property();
property1 .setPropertyName("Address");
property1 .setPropertyValue("302 New york Street");
Property property2 = new Property();
property2 .setPropertyName("City");
property2 .setPropertyValue("New york");
Property property3 = new Property();
property3 .setPropertyName("Country");
property3 .setPropertyValue("US");
entity2.getProperties().add(property1);
entity2.getProperties().add(property2);
entity2.getProperties().add(property3);
entities.add(entity2);
I need to show it on JSP as follows
Person
Firstname LastName Age
Peter Pan 28
Van helsing 50
Tom Williamson 35
Location
Address City Country
302 New York Street New York US
Highway Street Londona UK
The problem I have is each entity has different properties (number of properties and names varies).
I am using JSTL c for each for iteration. Please help me.
Edit 1:-
For single list i would do something like below.
<tr>
<th>Heading 1</th>
<th>Heading 2</th>
<th>Heading 3</th>
</tr>
<tr>
<c:forEach items="${list}" var="item">
<td>${item.property1}</td>
<td>${item.property2}</td>
<td>${item.property3}</td>
</c:forEach>
</tr>
If you see above my headings are not in iteration. But in my case i will have my headings in list itself.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
只要实体已按其“类型”分组,只需获取集合中的第一项,迭代其属性并显示属性名称即可。
然后迭代整个实体列表,仅显示每个实体的属性值。
如果它们尚未按实体“类型”分组,那么您需要按
entityName
对它们进行排序,并遵循与上述相同的过程。唯一的区别是,当您迭代实体时,您必须跟踪前一个实体的类型。当当前实体的类型与先前实体的类型不同时,显示新标题并继续。As long as the entities are already grouped by their "type", just take the first item in the collection, iterate over its properties, and display the property names.
Then iterate over the entire entity list, displaying only each entity's property values.
If they're not already grouped by entity "type", then you'll need to sort them by
entityName
, and follow the same procedure as above. The only difference would be that as you iterate over the entities you must track of the previous entity's type. When the current entity's type is different than the previous entity's type, display the new headings and continue.