1

スタッフが管理者の場合にいくつかのコンポーネントを表示するページを作成しています。

私はprimefaces 5.0でブートストラップでhtml5を使用しています

私が JSF について知っていることに基づいて、rendered 属性を使用してコンポーネントをレンダリングするかどうかを制御できます。

私のコンポーネントは html5 にあるので、代わりに jsf:rendered を使用しました。

私のコードでは、jsf:rendered="#{staffBean.staff.accountStatus =='ADMIN'}"staffBean.staff.accountStatus 内の値は ADMIN ではありません。

以下にコードの一部を添付しました。

<li class="active" jsf:rendered="#{staffBean.staff.accountStatus =='ADMIN'}">
    <a href="index.html"><i class="fa fa-user"></i> <span class="nav-label">Account Management</span> <span class="fa arrow"></span></a>
    <ul class="nav nav-second-level">
        <li class="active"><a href="createStaff.xhtml">Create Staff</a></li>
        <li><a href="removeStaff.xhtml">Delete Staff</a></li>
        <li><a href="updateStaff.xhtml">Update Staff</a></li>
    </ul>
</li>

jsf:rendered="#{staffBean.staff.accountStatus =='ADMIN'}"コンポーネントの出力をまだレンダリングする理由について何か考えはありますか?

4

1 に答える 1

1

これ<li>は、 が既存の JSF コンポーネントとして登録されていないためです。<form>JSF パススルー要素は、<input><a>、 など ( <h:form><h:inputText>、と同等のものがある) など、同等の JSF コンポーネントを持つ要素でのみ機能します<h:xxxLink>。つまり、これらは真の JSF コンポーネントに変換された「内部」です。

<ui:fragment>代わりに使用することをお勧めします。

<ui:fragment rendered="#{staffBean.staff.accountStatus eq 'ADMIN'}">
    <li class="active">
        ...
    </li>
</ui:fragment>

以下も参照してください。

于 2014-09-05T13:54:21.507 に答える