在JSF Primefaces中使用动态菜单更改内容部件
我使用的是一个JSF模板,它分为4部分——页眉、菜单栏、内容和页脚。标题包含应用程序名称、版本、用户名、上次登录等。从数据库检索的详细信息。菜单部分包含从DB w.r.t.填充的动态菜单。用户角色和访问权限。基于菜单项,我只需要刷新内容部分,而不需要重新加载/刷新页眉、菜单栏和页脚。因此,如果菜单包含指向SomePage.xhtml的URL,则单击菜单项时,SomePage.xhtml应加载到内容中。我在网上查了很多链接和解决方案,但都没能成功。有人能请我在这里吗 下面代码中的所有支持bean引用都是从数据库中检索数据 BaseTemplate.xhtml在JSF Primefaces中使用动态菜单更改内容部件,primefaces,jsf-2.2,Primefaces,Jsf 2.2,我使用的是一个JSF模板,它分为4部分——页眉、菜单栏、内容和页脚。标题包含应用程序名称、版本、用户名、上次登录等。从数据库检索的详细信息。菜单部分包含从DB w.r.t.填充的动态菜单。用户角色和访问权限。基于菜单项,我只需要刷新内容部分,而不需要重新加载/刷新页眉、菜单栏和页脚。因此,如果菜单包含指向SomePage.xhtml的URL,则单击菜单项时,SomePage.xhtml应加载到内容中。我在网上查了很多链接和解决方案,但都没能成功。有人能请我在这里吗 下面代码中的所有支持bean引
header.xhtml
菜单.xhtml
footer.xhtml
SomePage.xhtml
单击其中一个菜单项时,将在“内容”部分填充此内容。
这里有两个技巧:
1) 检查您的菜单模型bean范围:
- 如果您的菜单与用户相关,那么我想应该是@SessionScoped
- 您还可以每次动态创建菜单(在getMenuModel()中而不是在bean构造函数中)。效率较低,但至少能工作
<p:menubar id="menuBar1" model="#{menuBean.model}" />
也许我错了,但是JSF模板只是一个处理公共元素(菜单、页眉、页脚、对话框等)的系统,没有重复它们的实现(不要重复自己!)。您的想法是面向SPA(单页应用程序),JSF不能支持它(至少在本机上是这样)。您必须使用面板或div实现自己的“布局”系统,并使用ajax操作填充这些系统。这只是使用带facelet的JSF模板的页面装饰,而不是SPA。这里没什么不好的:)-完全没有。@miguel:这不是真的。jsf支持部分更新页面。我认为OP的主要问题是如何只更新主“面板”。
item.setUpdate("menuBar1");