我知道这个问题被问了一遍又一遍。我确实喜欢在与此相关的所有问题中提出的建议,并且我在 我提出的这个问题中做了 BalusC
告诉我,我还没有成功。所以网络应用程序的流程是:
我登录,成功时布尔loginIn变为真,页面被重定向到home.xhtml。(bean TestBean 和 EnterView 被实例化和 SessionScoped)。如果loggedIn 布尔值为真,则在此页面中我得到4 个链接。
为了不使用 JSTL c:choose 标签(因为 JSTL 和 JSF “一个在视图构建时运行,另一个在视图渲染时运行。” - BalusC)我使用了渲染属性。
出现带有链接的列表,但我必须单击它们两次才能执行应执行的操作。
片段:
<h:form rendered="#{enterView.userBean.loggedIn}">
<ul id="grileList">
<li><h:commandLink action="#{menuView.showTestsPage(1)}"
value="label1" rendered="#{enterView.userBean.loggedIn}"/></li>
<li><h:commandLink action="#{menuView.showTestsPage(2)}"
value="label2" rendered="#{enterView.userBean.loggedIn}"/></li>
<li><h:commandLink action="#{menuView.showTestsPage(3)}"
value="label3" rendered="#{enterView.userBean.loggedIn}"/></li>
<li><h:commandLink action="#{menView.showTestsPage(4)}"
value="label4" rendered="#{enterView.userBean.loggedIn}"/></li>
</ul>
</h:form>
h:form 它被正确渲染,因此它已经经历了视图渲染阶段,但是当我单击链接时它不执行操作(就在我单击它们两次时),所以它是视图构建时间???我读了他们两个,我以为我明白了......
我已将渲染属性放在 commandLinks 中以尝试渲染它们,但我没有成功。