Primefaces 3.4 p:panelMenu:无法控制p:submenu和p:menuitem的状态
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Primefaces 3.4 p:panelMenu:无法控制p:submenu和p:menuitem的状态相关的知识,希望对你有一定的参考价值。
给定以下折叠菜单(p:panelMenu):
<p:panelMenu style="width:200px">
<p:submenu label="#{uimsg.clm_title}" styleClass="pageFont">
<!-- <p:menuitem value="Delete" actionListener="#{buttonBean.delete}" ajax="true" icon="ui-icon-close"/> -->
</p:submenu>
<p:separator />
<!-- Sub-menu master Data -->
<p:submenu label="#{uimsg.trsf_title}" styleClass="pageFont">
<p:menuitem value="#{uimsg.trsf_create}" ajax="true"
icon="ui-icon-arrow-1-e" url="/transfers/editTransfer.xhtml" />
</p:submenu>
<p:separator />
<!-- Sub-menu master Data -->
<p:submenu label="#{uimsg.mst_data_title}" styleClass="pageFont">
<!-- Clubs -->
<p:submenu label="#{uimsg.mst_data_club_title}">
<p:menuitem value="#{uimsg.mst_data_show_club_title}" ajax="true"
icon="ui-icon-arrow-1-e" url="/clubs/showClubs.xhtml" />
<p:menuitem value="#{uimsg.mst_data_edit_club_title}" ajax="true"
icon="ui-icon-arrow-1-e" url="/clubs/editClub.xhtml" />
</p:submenu>
<!-- Associations -->
<p:submenu label="#{uimsg.mst_data_assocation_title}">
<p:menuitem value="#{uimsg.mst_data_show_association_title}"
ajax="true" icon="ui-icon-arrow-1-e"
url="/associations/showAssociations.xhtml" />
<p:menuitem value="#{uimsg.mst_data_edit_association_title}"
ajax="true" icon="ui-icon-arrow-1-e"
url="/associations/editAssociation.xhtml" />
</p:submenu>
<!-- leagues -->
<p:submenu label="#{uimsg.mst_data_league_title}">
<p:menuitem value="#{uimsg.mst_data_show_league_title}"
icon="ui-icon-arrow-1-e" url="/league/showLeagues.xhtml" ajax="true"/>
<p:menuitem value="#{uimsg.mst_data_edit_league_title}"
icon="ui-icon-arrow-1-e" url="/league/editLeague.xhtml" ajax="true"/>
</p:submenu>
<!-- Players -->
<p:submenu label="#{uimsg.mst_data_player_title}">
<p:menuitem value="#{uimsg.player_menu_show}" ajax="true"
icon="ui-icon-arrow-1-e" url="/player/showPlayers.xhtml" />
<p:menuitem value="#{uimsg.player_menu_edit}" ajax="true"
icon="ui-icon-arrow-1-e" url="/player/editPlayer.xhtml" />
</p:submenu>
<!-- Confederation -->
<p:submenu label="#{uimsg.mst_data_confed_title}">
<p:menuitem value="#{uimsg.mst_data_edit_confed_title}"
icon="ui-icon-arrow-1-e"
url="/confederations/showConfederations.xhtml" ajax="true" />
<p:menuitem value="#{uimsg.mst_data_show_confed_title}"
icon="ui-icon-arrow-1-e"
url="/confederations/editConfederation.xhtml" ajax="true" />
</p:submenu>
</p:submenu>
<p:separator />
<!-- Sub-menu Administration -->
<p:submenu label="#{uimsg.admin_title}"
rendered="#{auth.showAdministration() == true ? true : false }"
id="adminDivId" styleClass="pageFont">
<!-- User menu -->
<p:submenu label="#{uimsg.users_admin_title}">
<p:menuitem value="#{uimsg.admin_show_users_title}" ajax="true"
icon="ui-icon-arrow-1-e" url="/users/showUsers.xhtml" />
<p:menuitem value="#{uimsg.admin_edit_users_title}" ajax="true"
icon="ui-icon-arrow-1-e" url="/users/editUser.xhtml"
disabled="#{auth.editUsers() == true ? false : true }" />
</p:submenu>
<!-- Role menu -->
<p:submenu label="#{uimsg.roles_admin_title}">
<p:menuitem value="#{uimsg.admin_show_role_title}" ajax="true"
icon="ui-icon-arrow-1-e" url="/roles/showRoles.xhtml" />
<p:menuitem value="#{uimsg.admin_edit_role_title}" ajax="true"
icon="ui-icon-arrow-1-e" url="/roles/editRole.xhtml"
disabled="#{auth.editUsers() ne true}" />
</p:submenu>
</p:submenu>
<p:separator />
<!-- Sub-menu Version -->
<p:submenu label="#{uimsg.abt_software_title}" styleClass="pageFont">
<p:menuitem value="#{uimsg.abt_software_show_informations}"
icon="ui-icon-arrow-1-e" url="/version/showVersion.xhtml" ajax="true"/>
</p:submenu>
</p:panelMenu>
通过每次单击一个menuItem,PanelMenu表现得非常奇怪且不可预测:一些subMenu折叠而另一些则没有。这个“jabbi-jabba”似乎没有固定的规则。
我不知道原因。我主要在所有视图中使用重定向(“faces-redirect = true”),有些视图包含复合元素
有人有提示吗?
环境:
- AS:JBoss 7.1.1 final
- JSF版本:2.1.13
- Primefaces:3.4.1
primeFaces的panelMenu需要保存其状态,以便它始终可以向用户显示之前已打开/关闭的子菜单。 PanelMenu使用名称为panelmenu本身ID的cookie在客户端保存状态。使用javascript(请参阅js for panelmenu)由cliend端设置/创建cookie,并由Primefaces读取以更新其菜单。 cookie被设置为保存用户已打开的子菜单项的id。
解决问题的方法是:
- 确保只有具有用户指定ID的cookie
- 确保菜单项中的所有请求都只发送到一个应用程序目录
你可以这样做,你需要把它放在组件qazxsw poi和项目菜单中设置qazxsw poi qazxsw poi stateful="true"
ajax=false
async=false
global=false
。
而已。
以上是关于Primefaces 3.4 p:panelMenu:无法控制p:submenu和p:menuitem的状态的主要内容,如果未能解决你的问题,请参考以下文章
在 PrimeFaces 3.4 JSF 2.0 中按 id 查找组件
使用 JSF2.0 和 Primefaces 3.4 进行导航
使用commandButton Primefaces 3.4从dataTable内部提交表单时selectOneMenu null
Primefaces p:tabMenu 将 p:menuitem 向右对齐