私はjsfが初めてです。
私は基本的に4つのjsfファイルを持っています。
1) メニュー.xhtml
<h:html xmlns="http://www.w3.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:head>
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="north" style="min-width: 300px;" gutter="0">
<ui:insert name="header">
<ui:include src="../../layout/header.xhtml" />
</ui:insert>
</p:layoutUnit>
<p:layoutUnit position="center" style="border:none;" gutter="0">
<p:panel id="content" style="background : transparent; border : 0;">
<ui:include src="content.xhtml" />
</p:panel>
</p:layoutUnit>
<p:layoutUnit position="west" collapsible="true" gutter="6" >
<h:panelGroup id="menu" layout="block">
<h:form>
<ul>
<li><p:commandLink value="goto-include1" action="#{bean.doAction1}" update=":mainContent" ajax="true" /></li>
<li><p:commandLink value="goto-include2" action="#{bean.doAction2}" update=":mainContent" ajax="true" /></li>
</ul>
</h:form>
</h:panelGroup>
</p:layoutUnit>
<p:layoutUnit position="south" style="min-width: 300px;" gutter="0">
<div id="footer" class="ui-widget ui-widget-header">
<ui:include src="../../layout/footer.xhtml"></ui:include>
</div>
</p:layoutUnit>
</p:layout>`enter code here`
</h:body>
</f:view>
</h:html>
Include1.jsp
<ui:composition xmlns="http://www.w3c.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:outputText value="Include1"/>
</ui:composition>
Include2.jsp
<ui:composition xmlns="http://www.w3c.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:outputText value="Include1"/>
</ui:composition>
Include3.jsp
<ui:composition xmlns="http://www.w3c.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:outputText value="Include1"/>
</ui:composition>
Content.jsp
<ui:composition xmlns="http://www.w3c.org/1999/xhtml"
xmlns:c="http://java.sun.com/jsp/jstl/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<h:panelGroup id="mainContent" layout="block">
<ui:include src="#{bean.page}.xhtml" />
</h:panelGroup>
</ui:composition>
私の豆のクラスは次のとおりです
package com.assia.dslo.expresse.gui.component.pe;
import java.io.File;
import java.io.Serializable;
public class Bean implements Serializable {
private String page = "include3";
public String getPage() {
return page;
}
public void setPage(String page) {
this.page = page;
}
private static final long serialVersionUID = -802772877129109794L;
public void doAction1() {
this.page = "expresse/pe/include1.xhtml";
}
public void doAction2() {
this.page = "include2";
}
}
意図した動作は、Include1 リンクをクリックすると、中央のフレームに include1.jsf が表示され、Include2 リンクも同様に表示されることです。
ただし、Include1 の絶対パスは機能しません。絶対パスを相対パスに置き換えると、正常に動作します。誰かがなぜこれが起こるのか理解するのを手伝ってもらえますか? これは予想される動作ですか、それとも何か問題がありますか。
ありがとう