두 개의 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
이 다시 할당되지 않은 이유에 대해 누구든지 설명 할 수 있습니까? 그리고 이런 종류의 일을 성취 할 수있는 다른 방법이 존재한다면 (일부 일반 레이아웃 페이지를 가지고 거기에 일부 객체를 전달하고 페이지를 생성합니까?)? 내 콩은 봄에 의해 관리됩니다.
업데이트 : 표준 시간으로 태그를 교체 할 경우
<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>
: 명령 단추 모든 것을 완벽하게 작동
나는 문제가 어떻게 든 다음과 같습니다 내 복합 버튼에 연결되어있는 것 같아요. 개체를 템플릿에 전달할 때 템플릿이 전달 된 개체를 복합체로 전달하지만 확실히 뭔가 누락되었습니다.
'@ ViewScoped'는 JSF에서 가져온 것이지 PrimeFaces에서 가져온 것이 아닙니다. CDI에서'@ ViewScoped'를 사용하려면이 기능을 추가하는 MyFacesCODI 라이브러리를 추가 할 수 있습니다. –
예, 저는 이미 저의 과오를 드러내지 않았고 나의 단서를 편집했습니다. MyFacesCODI에 대한 정보를 보내 주셔서 감사합니다. – dimas
포틀릿 (Liferay 6) 환경에서 ICEFaces를 사용하고 있습니다. 빈은 Spring에 의해 관리되고 내 pageBean은 ViewScoped입니다 :((심지어 SessionScope도 동일하게 동작합니다) – svobol13