gpt4 book ai didi

java - 如何使用 Lambda 表达式和 Stream API 或某种替代方式解析和过滤 JSP 或 JSTL 中的两个列表?

转载 作者:行者123 更新时间:2023-12-02 12:49:38 25 4
gpt4 key购买 nike

下面是两个列表的遍历

首先,我需要查找第二个列表是否有 ID 与第一个列表匹配的内容。所以不必要地我需要在第一次迭代中应用 for 循环

<c:forEach var="mock" items="${form.aktivityList}">

<c:set value="false" var="ifAttachyExists" />
<c:forEach var="doc1" items="${form.aktivityList}">
<c:forEach var="doc1" items="${form.aktivityList}">
<c:forEach items="${form.attachyList}" var="attachy">
<c:if test="${ attachy.getId eq doc1.getId() }">
<c:set value="true" var="ifAttachyExists" />
</c:if>
</c:forEach>
</c:forEach>
</c:forEach>


<c:if test="${ifAttachyExists}">
<div class="table">
<c:forEach items="${form.attachyList}" var="attachy">
<c:if test="${ attachy.getId eq mock.getId() }">
DO THIS AND THIS AND THIS
</c:if>
</c:forEach>
</div>
</c:if>
</c:forEach>

一旦 Attachy 存在的值变为 true,我就会解析第二个列表并显示所需的结果。

代码看起来很破旧。如果我可以在 JSP 中使用 Lambda 表达式或 Stream API 或任何其他方法来处理这种情况,有人可以帮忙吗?

最佳答案

基于[1],我不建议尝试在 JSP 中解决这个问题,但我可以想到其他选项。

您可以使用静态方法创建一个 Java 类,它完全可以做您想做的事情,甚至可以根据您的需要调整输出。

public class CustomTag {

public static List<> doTagAction(arguments....) {
/*
* put your logic here and return a list or what you need
*/
}
}

可以通过 Taglib [2] 在您的 jsps 中轻松使用此静态方法。

<?xml version="1.0" encoding="ISO-8859-1"?>  
<taglib xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
version="2.1">

<tlib-version>1.0</tlib-version>
<short-name>your Taglib</short-name>

<function>
<name>doTagAction</name>
<function-class>CustomTag</function-class>
<function-signature>java.util.List doTagAction( /* your arguments */)</function-signature>
</function>
</taglib>

您只需通过标记引用即可在 jsp 中使用它!

[1] How to avoid Java code in JSP files?

[2] https://www.tutorialspoint.com/jsp/jsp_custom_tags.htm

关于java - 如何使用 Lambda 表达式和 Stream API 或某种替代方式解析和过滤 JSP 或 JSTL 中的两个列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44649606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com