У меня есть главная страница, которая выглядит следующим образом:
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:p="http://primefaces.prime.com.tr/ui"> <h:head> <title>Facelet Title</title> </h:head> <h:body> <h:form> <p:panel id="panel"> <ui:include src="#{bean.page}"> </ui:include> </p:panel> <p:commandButton actionListener="#{bean.changePage}" value="Push" ajax="true" update="panel"/> </h:form> </h:body> </html>
Я хочу сделать такой компонент и динамически менять, какая страница включена.Вот как выглядит боб:
@ManagedBean @SessionScoped public class Bean { private String page = ""; public Bean() { } public String getPage() { return page; } public void setPage(String page) { this.page = page; } public void changePage(ActionEvent e) { page = "Page.xhtml"; } }
Когда я нажимаю кнопку Push, я хочу включить эту страницу:
<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets"> <h:head> <title>Facelet Title</title> </h:head> <h:body> <h:form> <ui:component> Hello from facelets </ui:component> </h:form> </h:body>
Проблема в том, чтонажмите кнопку дважды, чтобы страница была включена.Как это можно сделать, чтобы при нажатии кнопки отображалась первая страница?
Этот тип шаблонов обычно достигается с помощью тегов <ui:insert> и <ui:define>. Ознакомьтесь с этой страницей руководства по Java EE.
<ui:insert>
<ui:define>