JSF 동적에는 Ajax 요청 사용이 포함됩니다.
JSF2에서는 Ajax 요청(예: PrimeFaces p:commandButton)을 동적으로 사용하여 ui:include의 src 값을 변경할 수 있습니까?감사해요.
<h:form>
<h:commandLink value="Display 2" action="#{fTRNav.doNav()}">
<f:setPropertyActionListener target="#{fTRNav.pageName}" value="/disp2.xhtml" />
</h:commandLink>
</h:form>
<ui:include src="#{fTRNav.pageName}"></ui:include>
그게 지금 제가 가지고 있는 것입니다.(p:commandButton을 사용하여) Ajax로 만드는 것이 가능합니까?
다른 답변에서 제안한 JSTL 태그는 필요하지 않고 재사용이 잘 되지 않습니다.
다음은 순수 JSF를 사용하는 기본적인 예입니다(서블릿 3.0 / EL 2.2를 실행한다고 가정할 때, 그렇지 않으면 실제로 사용해야 합니다).<f:setPropertyActionListener>
질문에서와 같이):
<h:form>
<f:ajax render=":include">
<h:commandLink value="page1" action="#{bean.setPage('page1')}" />
<h:commandLink value="page2" action="#{bean.setPage('page2')}" />
<h:commandLink value="page3" action="#{bean.setPage('page3')}" />
</f:ajax>
</h:form>
<h:panelGroup id="include">
<ui:include src="#{bean.page}.xhtml" />
</h:panelGroup>
와 함께
private String page;
@PostConstruct
public void init() {
this.page = "page1"; // Ensure that default is been set.
}
// Getter + setter.
다음은 Mnaged Bean을 사용하여 서브 콘텐츠를 동적으로 렌더링하는 방법입니다.먼저 중앙에 페이지를 설정합니다(메뉴 트리거에 의해 변경됨).private String name="/main_pages/mainpage.xhtml"
, 그런 다음 하위 메뉴를 클릭할 때마다 HelloBean이 재설정됩니다."name"
내용은 다음과 같이 업데이트됩니다.update=":content"
- 그런 다음 Bean에서 새 이름을 검색합니다.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
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>
<f:facet name="first">
<meta content='text/html; charset=UTF-8' http-equiv="Content-Type"/>
</f:facet>
</h:head>
<h:body>
<p:layout fullPage="true">
<p:layoutUnit position="north" size="150" resizable="true" closable="true" collapsible="true">
<h1>Madeline<br>shop</br></h1>
</p:layoutUnit>
<p:layoutUnit position="south" size="100" closable="true" collapsible="true">
Zapraszamy do odwiedzania naszego biura!
</p:layoutUnit>
<p:layoutUnit position="west" size="175" header="Menu" collapsible="true">
<h:form>
<p:menu>
<f:ajax render=":content">
<p:menuitem value="O naszej agencji" action="#{helloBean.setName('/main_pages/onas.xhtml')}" update=":content" />
<p:menuitem value="Ubezpieczenia pojazdów" action="#{helloBean.setName('/main_pages/ubpoj.xhtml')}" update=":content" />
<p:menuitem value="Ubezpieczenia majątkowe" action="#{helloBean.setName('/main_pages/ubmaj.xhtml')}" update=":content" />
<p:menuitem value="Ubezpieczenia na życie" action="#{helloBean.setName('/main_pages/ubnaz.xhtml')}" update=":content" />
<p:menuitem value="Zapytaj" action="#{helloBean.setName('/main_pages/zapytaj.xhtml')}" update=":content" />
<p:menuitem value="Kontakt" action="#{helloBean.setName('/main_pages/kontakt.xhtml')}" update=":content" />
</f:ajax>
</p:menu>
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center">
<br></br><br></br>
<p:panel id="content">
<ui:include src="#{helloBean.name}" />
</p:panel>
</p:layoutUnit>
</p:layout>
</h:body>
</html>
관리되는 빈:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import java.io.Serializable;
/**
*
* @author root
*/
@ManagedBean
@RequestScoped
public class HelloBean implements Serializable {
/**
* Creates a new instance of HelloBean
*/
private static final long serialVersionUID = 1L;
private String name="/main_pages/mainpage.xhtml";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
당신은 사용해야 합니다.<c:if test="condition">
usi:jax 버튼을 클릭하면 usi:jax 버튼이 있는 패널이 새로 고쳐집니다.
예:
먼저 문서에 다음 네임스페이스를 삽입하여 jstl core taglib이 포함되었는지 확인합니다.
<html xmlns:c="http://java.sun.com/jsp/jstl/core>"
그러면, 당신은 사용할 수 있습니다.<c:if>
다음과 같이 태그를 지정합니다.
<c:if test="#{!logBean.loggedIn}">
<ui:include src="loginpage.xhtml" />
</c:if>
<c:if test="#{logBean.loggedIn}">
<ui:include src="home.xhtml" />
</c:if>
언급URL : https://stackoverflow.com/questions/6219202/jsf-dynamic-include-using-ajax-request
'programing' 카테고리의 다른 글
Spring의 @Value 주석에 여러 속성 이름을 지정할 수 있습니까? (0) | 2023.09.07 |
---|---|
MySQL - 사용자의 선택에 따라 열 '이름'을 선택합니다. 열 'id'와 'parent'의 행이 동일한 경우 (0) | 2023.09.07 |
Safari ajax request Failed to load resource: The network connection was lost (0) | 2023.09.07 |
빌드 중에 호스트 볼륨을 도커 파일의 도커 컨테이너에 마운트하는 방법 (0) | 2023.09.07 |
Error dialog displayed when opening an excel file generated with EPPlus (0) | 2023.09.07 |