2010-11-24 3 views
0

- 템플릿과 아약스 전화 :.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 - 다른 방법으로 내 응용 프로그램을 정의 할 수 있습니까?

이 어떤 제안을 주시면 감사하겠습니다 :) 같은 형태의 숨겨진 입력 값으로 다음 요청에

답변

1

패스를.

<h:inputHidden value="#{selector.page}" /> 
+0

음. 예. 사실,이 소리는 저에게 이상합니다. 왜냐하면 "실행"에서 전체 양식이 아니라 단지 몇 가지 매개 변수 만 전달하기를 원하기 때문입니다 (우리가 마지막 날 토론 한 것처럼). 이 프레임 워크에서 이것을 이해해야합니다 :) – markzzz

+0

지금 당장이 방법을 시도해보십시오. 불행히도 그 내용을로드하지 마십시오. 내 셀렉터 Bean의 기본값으로 값을 설정해야한다고 생각합니다. 업데이트 된 코드를 살펴보십시오. 템플릿에서 # {selector.page}를 호출하면 "색인"을 얻지 못합니다. Dunno why ... – markzzz

+0

오, 아니, 맞아. 나는 그 inputhidden을 "page"라고 부를 필요가있다. :) 어쨋든 여전히 빈에 대한 디폴트 값을 설정한다. 팁 BalusC 주셔서 감사합니다, 당신 JSF의 주인처럼 보이 : – markzzz