JSF 테스트 응용 프로그램 및 PrimeFaces 구성 요소에 문제가있어 오류를 찾을 수 없습니다. 관리 빈에서 리디렉션이 작동하지 않습니다.
나는에 의해 정의 된 템플릿 파일 (layoutTempl.xhtml)로 시작 :....
<body>
<ui:composition template="./layoutTempl.xhtml">
<ui:define name="menubar">
MenuBar
</ui:define>
<ui:define name="tree">
Project Tree
</ui:define>
<ui:define name="main">
<ui:include src="index.xhtml"/>
</ui:define>
<ui:define name="footer">
Footer
</ui:define>
</ui:composition>
</body>
....
과 (abcContent :
....
<h:body>
<p:layout fullPage="true" >
<p:layoutUnit position="north" size="95" >
<ui:insert name="menubar" >
MenuBar
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="west" resizable="false" size="250">
<ui:insert name="tree" >
ProjectTree
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="center">
<ui:insert name="main" >
MainContent
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="south" size="45">
<ui:insert name="footer" >
Footer
</ui:insert>
</p:layoutUnit>
</p:layout>
</h:body>
....
이 템플릿은 두 페이지 (indexContent.xhtml)에 사용됩니다. XHTML) : 포함 index.xhtml
....
<body>
<ui:composition template="./layoutTempl.xhtml">
<ui:define name="menubar">
MenuBar
</ui:define>
<ui:define name="tree">
Project Tree
</ui:define>
<ui:define name="main">
<ui:include src="abc.xhtml"/>
</ui:define>
<ui:define name="footer">
Footer
</ui:define>
</ui:composition>
</body>
....
포함 된 파일 :
....
<h:body>
<ui:composition >
Hello from BareTest
<br /><br />
<h:form id="myform">
<p:selectOneMenu id="scroll2"
value="#{listTestBean.selectedMyObject}" >
<f:selectItems value="#{listTestBean.myObjects}"/>
<p:ajax event="change" listener="#{listTestBean.valueChanged}"/>
</p:selectOneMenu>
<br/><br/>
</h:form>
</ui:composition>
</h:body>
....
는 abc.xhtml을 포함하면서 :
....
<h:body>
<h2>We got at abc page!</h2>
<br /><br />
<h:form id="abcForm">
<p>#{listTestBean.selectedMyObject}</p>
<p:commandLink id="Ajax" ajax="true" action="indexContent?faces-redirect=false">
<h:outputText value="Main page (link)" />
</p:commandLink>
</h:form>
</h:body>
....
요청 listTestBean 게터와 세터의 valueChanged 방법 및 수단을 포함 범위를 관리 빈. 의 valueChanged 방법은 보유 : 기본적 abcContent 페이지로 리디렉션이다
....
try {
FacesContext.getCurrentInstance().getExternalContext().redirect("abcContent.xhtml");
} catch (IOException ioe) {
System.err.println("listTestBean.valueChanged: IOException");
}
....
한다.
그러나 selectItem 구성 요소에서 항목을 선택하면 abcContent.xhtml 페이지가 지정된 layoutTempl과 함께 렌더링되지 않습니까?
나는 전혀 이해하지 못한다. 미안하다! 그것은 아마 사소한 것이지만 그것을 해결할 수 없다!
안부
페이지가 템플릿없이 렌더링되거나 전혀 렌더링되지 않는다고 말하는가? 또한 web.xml의 url 패턴은 무엇입니까? – zulq
템플릿없이 렌더링됩니다! URL 패턴은 '/faces/* url-pattern>'처럼 보입니다. –
페이지에 템플릿이 표시되지 않을 수 있습니다. 경로를 확인하고 페이지를 직접로드하고 확인하십시오. – zulq