我有一个面板菜单,里面有一些子菜单,其扩展属性由支持 bean 控制。问题是,不同子菜单的扩展状态似乎被浏览器缓存,这取决于用户上次访问该 url 时每个子菜单的先前状态,忽略设置为扩展的 bool 状态。行为与 p:panelMenu 和 p:menu 相同。
您可以在 PF 项目上重现该问题,将以下代码添加到 jsf 页面。不需要支持 bean。第一次加载页面时,中间的子菜单将显示为折叠状态。如果页面重新加载,在菜单上播放一点后,不再考虑扩展属性,页面显示方式响应用户在浏览器上的最后配置。
<h:form>
<p:panelMenu toggleable="true">
<p:submenu label="No expandido" expanded="false">
<p:menuitem value="External" url="http://www.primefaces.org"/>
</p:submenu>
<p:submenu label="Expandido" expanded="true">
<p:menuitem value="External" url="http://www.primefaces.org"/>
</p:submenu>
<p:submenu label="No expandido" expanded="false">
<p:menuitem value="External" url="http://www.primefaces.org"/>
</p:submenu>
</p:panelMenu>
</h:form>
注意手册,此行为不是预期的行为:
expanded - false - Boolean - Defines the state of submenu.
...根据 Cagatay 在 PF 论坛中的帖子, panelMenu 已经准备好使用扩展属性。
问题是,我有一种方法可以设置 panelMenu 或菜单内子菜单元素的展开/未展开状态 ?
感谢您的任何评论/建议/解决方法。
Primefaces 5.2 | Tomcat 7.0.X | Chrome + IE11
最佳答案
您是否尝试过设置 panelMenu 的 stateful 属性:
<p:panelMenu stateful="false">
这将禁用菜单缓存到 cookie。
关于primefaces - 未考虑 subMenu 上的扩展属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30484925/