RTF中的PrimeFaces菜单项

时间:2014-07-05 19:02:47

标签: css jsf primefaces

我正在为我的应用程序开发两种语言菜单,第一语言是英语,第二语言是阿拉伯语。

英语没问题但是当我用RTL显示阿拉伯语菜单时,菜单名称显示成功,但所有子菜单项都显示在LTR中。

<h:form
        dir="#{session.getAttribute('user').locale=='en-US'?'ltr':'rtl'}">
        <p:panelMenu style="width:90%;"   >
            <p:submenu label="#{msg.ControlPanelMenu}"  
                rendered="#{userAuthneticator.authenticated}">
                <p:menuitem value="#{msg.AdministrationMenu}"    
                    action="/admin/index.xhtml" rendered="#{user.type==1}"
                    ajax="false" />
                <p:menuitem value="#{msg.TodayActivities}"
                    action="#{userActivity.prepareView()}" ajax="false" />
                <p:menuitem value="#{msg.ChangePasswordMenu}"
                    action="#{userUtils.prepareView()}" ajax="false" />
                <p:menuitem value="#{msg.ChangeLang}"
                    action="#{userUtils.changeLanguage()}" ajax="false" />
                <p:menuitem value="#{msg.LogoutMenu}"
                    action="#{userAuthneticator.logout()}" ajax="false"
                    onclick="if (!confirm('#{msg.ConfirmLogout}'))
                                return false" />
            </p:submenu>

这是RTL中菜单的display

enter image description here

如何正确显示RTL中显示的菜单项?

感谢。

1 个答案:

答案 0 :(得分:2)

您可以将以下代码添加到您的页面。你需要通过操纵css手动完成它。

<p:outputPanel rendered="#{session.getAttribute('user').locale!='en-US'}">
    <style>
        .ui-panelmenu .ui-menuitem-text,.ui-panelmenu .ui-menuitem-text {
            float: right !important;
        }
    </style>
</p:outputPanel>