我对JSF和PrimeFaces相当新,并且在开发具有多个菜单的完整页面布局时遇到了一些问题。嵌套的primefaces布局动态页面更新
问题#1
我们必须使用与左侧嵌套布局单位PrimeFaces 3.3一个完整的页面布局如下:
<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop">
<p:layout>
<p:layoutUnit id="inner_center" position="center">
<h:form id="formMainMenu">
<ui:include src="#{menuBean.pageToDisplay}.xhtml" />
</h:form>
</p:layoutUnit>
<p:layoutUnit id="inner_south" size="200" position="south">
<h:form id="formStartMenu">
<p:menu>
<p:submenu label="Start Menu">
<p:menuitem value="Start" actionListener="#{#menuBean.setPageToDisplay('template/menu/start')}" update=":inner_center" />
</p:submenu>
</p:menu>
</h:form>
</p:layoutUnit>
</p:layout>
</p:layoutUnit>
下面是支持bean:
@ManagedBean(name = "menuBean")
@SessionScoped
public class menuBean implements Serializable {
private String pageToDisplay = "template/menu/main";
public String getPageToDisplay() {
return this.pageToDisplay;
}
public void setPageToDisplay(String pageToDisplay) {
this.pageToDisplay = pageToDisplay;
} }
当我点击menuItem时,整个LayoutUnit(inner_c输入)消失。我已经尝试了Ajax的Forms和Panel控件的许多组合,并且无法加载第二页和菜单。由于我在JSF方面的知识有限,也许我的方法不正确。我希望这件事很简单,我只是想念它。
从menuItem动作,我想加载inner_center布局单元中的另一个PrimeFaces菜单bean ..也许我不需要这样做,只需通过Ajax调用菜单?
ISSUE#2 使用这些嵌套布局单元,当页面加载时,父布局单元标题“服务”完全消失。
<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop">
任何关于整体方法的帮助或建议非常感谢!
谢谢!
一些环境信息:Mojara 2.1,Primefaces 3.3,NetBeans IDE 7.0.1 + Glassfish – 2012-07-12 04:28:27
我不能肯定地说,但是如果插入的页面具有表单组件,则可能会发生此问题。嵌套表单会导致问题。 – 2012-07-12 12:52:20
谢谢。你是正确的..建议将表单放在layoutUnit控件中,我已经完成了...还确保在加载的页面中没有表单标签。我将再次尝试使用''和PanelGroup。也许参考是关闭的。 IDEALLY,我想跳过加载一个页面,并直接在layoutUnit中放置一个菜单,并通过传递一个值来动态填充它。 '
' ..不确定最好的办法。 – 2012-07-12 16:08:39