- 템플릿과 아약스 전화 :.JSF - 나는 코드의 거의 라인 내 dubt을 설명하려고합니다 모범 사례
template.xhtml
- 난 여기가 GET 매개 변수로라는 이름의 페이지를로드 (예는 index.xhtml? 메신저 로그인 아닌지 내 자신의 홈페이지 (즉)
<h:panelGroup rendered="#{!login.loggedIn}">
<h:outputLabel styleClass="content_title" value="im not logged" />
</h:panelGroup>
<h:panelGroup rendered="#{login.loggedIn}">
<h:outputLabel styleClass="content_title" value="im logged" />
</h:panelGroup>
ajax call
변경됩니다 - - 페이지 = 홈페이지 => 나는 homepage.xhtml)
<h:panelGroup layout="block" id="content">
<c:catch>
<ui:include src="#{selector.page}.xhtml" />
</c:catch>
</h:panelGroup>
homepage.xhtml
로드 일 때문에 에 진짜 문제는이다;
<f:ajax event="action" execute="param1 param2" render=":content"/>
selector bean
: :이 같은 호출 할 경우
package model;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(name="selector")
@RequestScoped
public class Selector {
@ManagedProperty(value="#{param.page}")
private String page;
public String getPage() {
if(page.compareTo("")==0) {
this.page="homepage";
}
return page;
}
public void setPage(String page) {
this.page=page;
}
}
을 나는 템플릿에 정의 된 panelGroup content
에 새로운 데이터를로드 할 수 있습니다.
문제는 내가 이것을 호출하면 page parameter
(이전에 선택기 빈에서 설정 됨)을 잃어 버렸고 현재 페이지를 다시로드 할 수 없다는 것입니다.
그래서, 당신을위한 트릭은 다음과 같습니다
1 - 빈 SessionScoped을 넣어?
2 - 패스 ajax 호출 get 값?
3 - 다른 방법으로 내 응용 프로그램을 정의 할 수 있습니까?
이 어떤 제안을 주시면 감사하겠습니다 :) 같은 형태의 숨겨진 입력 값으로 다음 요청에
음. 예. 사실,이 소리는 저에게 이상합니다. 왜냐하면 "실행"에서 전체 양식이 아니라 단지 몇 가지 매개 변수 만 전달하기를 원하기 때문입니다 (우리가 마지막 날 토론 한 것처럼). 이 프레임 워크에서 이것을 이해해야합니다 :) – markzzz
지금 당장이 방법을 시도해보십시오. 불행히도 그 내용을로드하지 마십시오. 내 셀렉터 Bean의 기본값으로 값을 설정해야한다고 생각합니다. 업데이트 된 코드를 살펴보십시오. 템플릿에서 # {selector.page}를 호출하면 "색인"을 얻지 못합니다. Dunno why ... – markzzz
오, 아니, 맞아. 나는 그 inputhidden을 "page"라고 부를 필요가있다. :) 어쨋든 여전히 빈에 대한 디폴트 값을 설정한다. 팁 BalusC 주셔서 감사합니다, 당신 JSF의 주인처럼 보이 : – markzzz