我创建了一个二叉树,现在我想在条件中显示我的jsp中的结果。
每个节点有4个元素(id,question,answer和leftnode rightnode)
如果用户单击“是”,程序将转到树的左侧,如果他在树的右侧回答“否”。
例如,最初的问题是“你是男人吗?”如果他回答“是”,我们将向左侧和页面视图“你是一个歌手?”如果他回答“否”页面显示“你是法国人?”。
在java中,它会解决原始问题。
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>
谢谢
答案 0 :(得分:0)
您必须使用如下所示的属性名称,而不是使用${cursor.getQuestion() }
之类的方法:${cursor.question }
P.S。并确保你有一个正确的getter名称(get应该是小写)
答案 1 :(得分:0)
感谢您的帮助。 我找到了解决方案。对于那些感兴趣的人,这里有适用的代码
<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>
问题在于范围。在每个循环中,使用“session”作用域我的变量每次都被重置。通过范围内的“应用程序”,它只被初始化一次,我可以得到我想要的东西
感谢