この質問が何度も聞かれたことは知っています。私はこれに関するすべての問題で提案されたのが好きで、この質問で私が入れたBalusCを実行しました
と言われましたが、まだ成功していません。したがって、Web アプリのフローは次のようになります。
ログインに成功すると、ブール値の LoggedIn が true になり、ページが home.xhtml にリダイレクトされます。(Bean TestBean および EnterView はインスタンス化され、SessionScope 化されます)。このページでは、loggedIn ブール値が true の場合、4 つのリンクを取得しました。
JSTL の c:choose タグを使用しないために (JSTL と JSF が「ビューのビルド時に実行され、ビューのレンダリング時に実行されます」- BalusC のため)、 render 属性を使用しました。
リンク付きのリストが表示されますが、必要なアクションを実行するにはリンクを 2 回クリックする必要があります。
スニペット:
<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 は正しくレンダリングされているため、レンダリングされたビューのフェーズを経ていますが、リンクをクリックしたとき (リンクを 2 回クリックしたとき) にアクションを実行しないため、ビューのビルド時間ですか? 私はそれらの両方について読みました、私は理解したと思いました...
render 属性を commandLinks に入れてレンダリングしようとしましたが、成功しませんでした。