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_Jstl - Fatal编程技术网

Java jstl中的循环二叉树

Java jstl中的循环二叉树,java,jsp,jstl,Java,Jsp,Jstl,我创建了一个二叉树,现在我想在jsp中显示结果,并附带条件 每个节点有4个元素(id、问题、答案和leftnode rightnode) 如果用户单击“是”,程序将转到树的左侧,如果用户回答“否”,程序将转到树的右侧 例如,最初的问题是“你是个男人?”如果他回答“是”,我们将转到左侧,如果他回答“否”,页面将显示“你是法国人?” 在java中,它将与原始问题保持一致 cursor [i]. GetQuestion () 那么是的 cursor [i] getQuestion. GetLeftn

我创建了一个二叉树,现在我想在jsp中显示结果,并附带条件

每个节点有4个元素(id、问题、答案和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>


谢谢您

不要使用像
${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>

问题在于范围。在每个循环中,在“会话”范围内,我的变量每次都被重置。通过作用域中的“应用程序”,它只初始化一次,我可以得到我想要的

谢谢