1

私のアプリでは、ユーザーの役割として家庭教師と学生がいます。そして、両方のメインページは同じになると思います。ただし、メニューは講師とユーザーによって異なります。.xhtmlページtutorMenu.xhtmlとstudent.xhtmlを作成しました。そして、役割インクルードメニューからの依存を望んでいます。ページ全体にレイアウトを使用し、すべてのページでui:compositionのコンテンツ「コンテンツ部分」を変更します。

menu.xhtmlで

<h:body>
    <ui:composition>        
            <div class="menu_header">
                <h2>
                    <h:outputText value="#{msg['menu.title']}" />
                </h2>
            </div>
            <div class="menu_content">
                <с:if test="#{authenticationBean.user.role.roleId eq '2'}">
                    <ui:include src="/pages/content/body/student/studentMenu.xhtml"/>
                </с:if>

                <с:if test= "#{authenticationBean.user.role.roleId eq '1'}">
                    <ui:include src="/pages/content/body/tutor/tutorMenu.xhtml" />
                </с:if>
            </div>      
    </ui:composition> 

jstlを使用することはより良い解決策ではないことを私は知っていますが、他のものを見つけることができません。私の問題の最良の決定は何ですか?

4

1 に答える 1

2

この場合、jstl-tagsを使用することはまったく問題ありません。これは、Faceletsにjstlタグに対応するタグハンドラー(ビューツリーの作成時に処理される)があり、それらを完全に処理するためです。この場合、c:ifは、ui:includeの処理(およびインクルードされたxhtmlファイルにあるコンポーネントの追加)を妨げる可能性があります。これにより、コンポーネントツリーが減少し、フォームのパフォーマンスが向上します。このアプローチを使用することの1つの欠点は、ajaxを使用してこれらのフォーム部分を更新できないことです。つまり、他の役割のui:includeがビューの一部ではなくなったため、ユーザー役割を変更し、ajaxを使用してフォームを更新します。このような場合は、ページ全体を更新する必要があります。

于 2012-11-10T10:58:51.100 に答える