Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在JSTL视图层中通过跟踪上一个&;在列表上循环时的当前值?_Java_Jsp_Group By_Jstl - Fatal编程技术网

Java 如何在JSTL视图层中通过跟踪上一个&;在列表上循环时的当前值?

Java 如何在JSTL视图层中通过跟踪上一个&;在列表上循环时的当前值?,java,jsp,group-by,jstl,Java,Jsp,Group By,Jstl,首先,我检索服务层中的Note对象: List<Note> notes = this.getNotes(); 然后我迭代列表,从循环中将prevNote设置为currenote,并将currenote设置为当前注释项(note): <c:forEach items="${notes}" var="note"> <c:set var="prevNote">${currNote}</c:set> <c:set var="cur

首先,我检索服务层中的
Note
对象:

List<Note> notes = this.getNotes();
然后我迭代
列表
,从循环中将
prevNote
设置为
currenote
,并将
currenote
设置为当前注释项(
note
):

<c:forEach items="${notes}" var="note">

    <c:set var="prevNote">${currNote}</c:set>
    <c:set var="currNote">${note}</c:set>

    prev:<c:out value="${prevNote.userCode}"/>
    curr:<c:out value="${currNote.userCode}"/>

</c:forEach>
我想在这里做的是检查
prevNote
currenote
是否包含相同的
userCode
值-如果是,我想跳过
列表中的当前元素
并显示下一个
注释
,该注释具有不同的
userCode
(类似于通过操作模拟
分组)。


关于如何执行此操作以及为什么会收到此错误消息的任何提示?

c:set
正文中设置一个值将使用
toString()将其转换为
String
对象的方法。该异常还暗示您不是在处理fullworthy
Note
实例,而是在处理
字符串
实例

改为使用
属性

<c:set var="prevNote" value="${note}" />
<c:set var="currNote" value="${note}" />


关于您的功能要求:

我想在这里做的是检查prevNote和currNote是否包含相同的用户代码值-如果它们包含相同的用户代码值,我想跳过列表中的当前元素并显示具有不同用户代码的下一个注释(类似于模拟分组操作)

仅在循环结束时存储当前注释就足够了

<c:forEach items="${notes}" var="note">
    <c:if test="${empty prevNote or note.userCode != prevNote.userCode}">
         <c:out value="${note.userCode}" />
    </c:if>
    <c:set var="prevNote" value="${note}" />
</c:forEach>

c:set
正文中设置一个值实际上会使用对象的
toString()
方法将其转换为
String
。例外情况还表明您不是在处理一个完整的
Note
实例,而是在处理一个
String
实例

改为使用
属性

<c:set var="prevNote" value="${note}" />
<c:set var="currNote" value="${note}" />


关于您的功能要求:

我想在这里做的是检查prevNote和currNote是否包含相同的用户代码值-如果它们包含相同的用户代码值,我想跳过列表中的当前元素并显示具有不同用户代码的下一个注释(类似于模拟分组操作)

仅在循环结束时存储当前注释就足够了

<c:forEach items="${notes}" var="note">
    <c:if test="${empty prevNote or note.userCode != prevNote.userCode}">
         <c:out value="${note.userCode}" />
    </c:if>
    <c:set var="prevNote" value="${note}" />
</c:forEach>