Java 动态按钮操作在jsf中不起作用
在JSF中。 我使用的是选择标签。启动时==true将显示panelGrid。否则将显示开始命令按钮。 因此,当我点击Start CommandButton时,我设置started=true;并更新表格Java 动态按钮操作在jsf中不起作用,java,jsf,web,Java,Jsf,Web,在JSF中。 我使用的是选择标签。启动时==true将显示panelGrid。否则将显示开始命令按钮。 因此,当我点击Start CommandButton时,我设置started=true;并更新表格 <h:form id="frmBig"> <c:choose> <c:when test="#{realExam.started}">
<h:form id="frmBig">
<c:choose>
<c:when test="#{realExam.started}">
<p:panelGrid id="pnlExam" binding="#{realExam.grid}"/>
</c:when>
<c:otherwise>
<p:commandButton value="Start" binding="#{realExam.cmdBtn}"/>
</c:otherwise>
</c:choose>
</h:form>
当我单击FinishCommandButton时,不调用ShowResult方法。
为什么不打电话?我不知道
我也试着不使用choose标签。它工作得很好
public void showResult() {
System.out.println("fin clicked");
}
一般来说,不要混合使用jsfh:and f:tags和jstlc:tags。这可能会产生意想不到的结果,因为在JSF生命周期的不同点对它们进行评估 解决这个问题的方法是使用渲染属性。它也更整洁:
<h:form id="frmBig">
<p:panelGrid id="pnlExam" binding="#{realExam.grid}" rendered="#{realExam.started}"/>
<p:commandButton value="Start" binding="#{realExam.cmdBtn}" rendered="#{not realExam.started}"/>
</h:form>
问题解决了。我添加了@SessionScoped RealExam managedBean的负责人。谢谢你的所有建议你能用showResult签名更新问题吗?你省略了一堆代码和上下文。对不起,我是JSF新手。我不理解渲染属性。
<h:form id="frmBig">
<p:panelGrid id="pnlExam" binding="#{realExam.grid}" rendered="#{realExam.started}"/>
<p:commandButton value="Start" binding="#{realExam.cmdBtn}" rendered="#{not realExam.started}"/>
</h:form>