如何在JSP上显示带有动态列标题的列表列表?

发布于 2024-12-11 14:35:20 字数 2525 浏览 4 评论 0原文

下面是我的代码,

    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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

枯寂 2024-12-18 14:35:20

只要实体已按其“类型”分组,只需获取集合中的第一项,迭代其属性并显示属性名称即可。

然后迭代整个实体列表,仅显示每个实体的属性值。

如果它们尚未按实体“类型”分组,那么您需要按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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文