如何使用 Lambda 表达式和流 API 或其他方式在 JSP 或 JSTL 中解析和过滤两个列表



以下是两个列表的遍历

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

<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>

一旦附加的值存在变为真,那么我就会解析第二个列表并显示所需的结果。

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

基于

[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] 如何避免 JSP 文件中的 Java 代码?

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

最新更新