Java jstl中的循环二叉树
我创建了一个二叉树,现在我想在jsp中显示结果,并附带条件 每个节点有4个元素(id、问题、答案和leftnode rightnode) 如果用户单击“是”,程序将转到树的左侧,如果用户回答“否”,程序将转到树的右侧 例如,最初的问题是“你是个男人?”如果他回答“是”,我们将转到左侧,如果他回答“否”,页面将显示“你是法国人?” 在java中,它将与原始问题保持一致Java jstl中的循环二叉树,java,jsp,jstl,Java,Jsp,Jstl,我创建了一个二叉树,现在我想在jsp中显示结果,并附带条件 每个节点有4个元素(id、问题、答案和leftnode rightnode) 如果用户单击“是”,程序将转到树的左侧,如果用户回答“否”,程序将转到树的右侧 例如,最初的问题是“你是个男人?”如果他回答“是”,我们将转到左侧,如果他回答“否”,页面将显示“你是法国人?” 在java中,它将与原始问题保持一致 cursor [i]. GetQuestion () 那么是的 cursor [i] getQuestion. GetLeftn
cursor [i]. GetQuestion ()
那么是的
cursor [i] getQuestion. GetLeftnode ()
当然不是
cursor [i]. GetRightnode (). GetQuestion
直到,一切都正常工作,但当我想循环,直到不再有任何问题
<c:when test="${not empty cursor[i].getQuestion() }">
程序在第一个循环处停止,并在光标不为空时停止
这是我的完整代码jstl
<c:choose>
<c:when test="${not empty cursor[i].getQuestion() }">
<c:if test="${param.btn eq 'Oui'}" var="oui">
<c:set var="cursor" value="${cursor[i].getLeftnode() }" scope="session"></c:set>
<c:set var="i" value="${i+1 }" scope="session"></c:set>
</c:if>
<c:if test="${param.btn eq 'Non'}" var="non">
<c:set var="cursor" value="${cursor[i].getRightnode() }" scope="session"></c:set>
<c:set var="i" value="${i+1 }" scope="session"></c:set>
</c:if>
</c:when>
</c:choose>
<c:out value="${cursor.getQuestion() }"></c:out>
谢谢您不要使用像
${cursor.getQuestion()}
这样的方法,您必须使用这样的属性名:${cursor.question}
另外,请确保您有一个合适的getter名称(get应该是小写)谢谢您的帮助。
我找到了解决办法。对于那些感兴趣的人,下面是有效的代码
<c:set var="cursor" value="${nodes }" scope="application"></c:set> <form method="get">
<c:choose>
<c:when test="${not empty cursor.getQuestion() }">
<c:if test="${param.btn eq 'yes'}" var="yes">
<c:set var="cursor" value="${cursor.getLeftnode() }" scope="session"></c:set>
</c:if>
<c:if test="${param.btn eq 'no'}" var="no">
<c:set var="cursor" value="${cursor.getRightnode() }" scope="session"></c:set>
</c:if>
</c:when>
</c:choose>
<c:out value="${cursor.getQuestion() }"></c:out>
问题在于范围。在每个循环中,在“会话”范围内,我的变量每次都被重置。通过作用域中的“应用程序”,它只初始化一次,我可以得到我想要的
谢谢