我有两个jsf页面。 layout.xhtml和page.xhtml。布局是这样的:JSF将对象传递给模板
<ui:composition>
<h:panelGroup id="menu" layout="block">
<h:outputText value="#{menuBean}" />
<h:form>
<ui:repeat var="menuItem" value="#{menuBean.menuItems}">
<button:menuItem label="#{msgs[menuItem.label]}" action="#{menuBean.selectItem(menuItem.label)}" update="#{update}" />
</ui:repeat>
</h:form>
</h:panelGroup>
<ui:repeat var="menuItem" value="#{menuBean.menuItems}">
<h:panelGroup layout="block" rendered="#{menuBean.selectedItemLabel eq menuItem.label}">
<ui:include src="#{menuItem.page}" />
</h:panelGroup>
</ui:repeat>
和页面是这样的:
<h:panelGroup binding="#{page}" layout="block">
<ui:decorate template="../template.xhtml">
<ui:param name="menuBean" value="#{pageBean}" />
<ui:param name="update" value=":#{page.clientId}" />
</ui:decorate>
</h:panelGroup>
当我第一次渲染网页一切正常(的菜单项渲染等)。我点击任何按钮后,我得到Target Unreachable, identifier 'menuBean' resolved to null
。
任何人都可以解释我发生了什么,为什么menuBean
没有再次分配,如果存在另一种方式来实现这种事情(有一些通用的布局页面,传递一些对象并生成页面)?我的豆由Spring管理。
UPDATE:
我想这个问题以某种方式连接到我的复合按键,看起来像这样:
<composite:interface name="menuItem">
<composite:attribute name="action" targets="button" />
<composite:attribute name="styleClass" />
<composite:attribute name="label" />
<composite:attribute name="update" />
<composite:attribute name="rendered" />
<composite:insertChildren />
</composite:interface>
<composite:implementation>
<h:commandButton id="button" value="#{cc.attrs.label}" style="width: 150px;" action="#{cc.attrs.action}"
rendered="#{empty cc.attrs.rendered ? true : cc.attrs.rendered}" styleClass="menu-item #{cc.attrs.styleClass}" type="button">
<f:ajax render="#{cc.attrs.update}" />
</h:commandButton>
</composite:implementation>
如果我更换用标准小时标签:的commandButton一切完美。我将对象传递给模板,模板将传递的对象传递给复合,但我肯定错过了一些东西。
'@ ViewScoped'来自JSF,而不是PrimeFaces。在CDI中,如果您想使用'@ ViewScoped',则可以添加添加此功能的MyFacesCODI库。 – 2013-02-10 17:07:05
是的,我已经打开了我的恶作剧,编辑我的unswer。感谢您提供MyFacesCODI的相关信息,我会在有空的时候看看它。 – dimas 2013-02-10 17:09:32
我在Portlet(Liferay 6)环境中使用ICEFaces。豆由Spring管理,我的pageBean是ViewScoped :((即使SessionScope的行为相同) – svobol13 2013-02-10 17:25:30