Jsp c:forEach don';如果前一行中已经存在相同的值,则不要重复

Jsp c:forEach don';如果前一行中已经存在相同的值,则不要重复,jsp,foreach,jstl,Jsp,Foreach,Jstl,我有点麻烦了 我有这样的代码: Market market = new market(); List<Market > list = marketService.getMarketItemList(market); model.addAttribute("list", list); type | item_name fruit | Banana fruit | Apple vegetable | Onion <c:forEach va

我有点麻烦了

我有这样的代码:

Market market = new market();
List<Market > list = marketService.getMarketItemList(market);
model.addAttribute("list", list);
type      |  item_name

fruit     |  Banana

fruit     |  Apple

vegetable |  Onion
<c:forEach var="cmenu" items="${list}">
    <li><a href="${url_itemmarket}/${cmenu.itemName}">${cmenu.description}/a>/li>
</c:forEach>
type      |  Item Name

Fruit     |  Banana

          |  Apple

Vegetable |  Onion
Map<String, List<String>> data = new HashMap<String, List<String>>();
我在JSP中为每一个都编写了如下代码:

Market market = new market();
List<Market > list = marketService.getMarketItemList(market);
model.addAttribute("list", list);
type      |  item_name

fruit     |  Banana

fruit     |  Apple

vegetable |  Onion
<c:forEach var="cmenu" items="${list}">
    <li><a href="${url_itemmarket}/${cmenu.itemName}">${cmenu.description}/a>/li>
</c:forEach>
type      |  Item Name

Fruit     |  Banana

          |  Apple

Vegetable |  Onion
Map<String, List<String>> data = new HashMap<String, List<String>>();
我不想在jsp视图中重复value-fruit

有人能帮我拿一个例子或一些参考资料吗

谢谢

1

您的HTML中有一些错误:

<li><a href="${url_itemmarket}/${cmenu.itemName}">${cmenu.description}/a>/li>
                                                                      ^  ^
                                                                      |  |
    two errors here (mising < characters) --------------------------------

    replace with this -----------------------------------------------------
                                                                      |   |
                                                                      v   v
<li><a href="${url_itemmarket}/${cmenu.itemName}">${cmenu.description}</a></li>

下面是一个关于将映射与JSP和JSTL结合使用的示例。

按如下方式存储数据:

Market market = new market();
List<Market > list = marketService.getMarketItemList(market);
model.addAttribute("list", list);
type      |  item_name

fruit     |  Banana

fruit     |  Apple

vegetable |  Onion
<c:forEach var="cmenu" items="${list}">
    <li><a href="${url_itemmarket}/${cmenu.itemName}">${cmenu.description}/a>/li>
</c:forEach>
type      |  Item Name

Fruit     |  Banana

          |  Apple

Vegetable |  Onion
Map<String, List<String>> data = new HashMap<String, List<String>>();
Map data=newhashmap();

如果无法创建地图,因此如果需要使用列表,可以检查上一个值

您可以创建一个包含上一个值的变量并检查:

<c:set var="types" value="${['fruit','fruit','vegetable']}"/>
<c:forEach items="${types}" var="type">
  ${type eq previousType ? '-same-' : type}<br/>
  <c:set var="previousType" value="${type}"/>
</c:forEach>
在这里,您还可以使用
而不是status.first
代替
status.index gt 0

两者都将输出:

fruit
-same-
vegetable

这是纯jsp或其他任何东西,我认为这可以用于每个,,,但可能需要修改您可以用一个简单的foreach来完成,但它会变得混乱。您必须跟踪上一个类型,并确定每一行的类型是否已更改。如果你用地图,它会更干净。您可以迭代每个键(这将是一种类型),然后打印水果名称、市场等的相关列表。我一直使用hashmap,但仍然相同。。key=fruit | value=banana输出仍然相同。如果您已经在使用HashMap,那么您使用的
是错误的。看看我在答案中链接到的答案。它显示了如何在映射中使用
标记(请注意,循环中的
var
实际上是
MapEntry
类型)。您共享的示例代码使其看起来像是在使用列表(而不是地图)。我还在我的答案中添加了一堆示例代码…我不知道JSP中是否允许使用
符号。。。您可能不想先尝试;-)不幸的是,我无法测试我上面键入的任何内容,因此可能会有错误。这很有效,谢谢!!。。谢谢你帮我解决了我的问题。。!我的英语不好>,,