2012-09-30 5 views
1

primefaces 트리 구성 요소가있는 탐색 메뉴를 개발했습니다. 트리 노드에는 내부에 데이터로 Project 객체가 있습니다. 각 프로젝트를 클릭 할 때 동적으로로드되는 프로젝트 세부 정보가있는보기를로드 할 수 있어야합니다.프라임 뷰에서 트리의 뷰에 객체를 전달하는 방법

treeManagedBean에 onNodeSelectMethod를 호출
<h:form> 
    <p:tree value="#{treeBean.root}" var="node" 
        selection="#{treeBean.selectedNode}" id="tree" > 
        <p:ajax event="select" listener="#treeBean.onNodeSelect}"/> 
     <p:treeNode styleClass="treeNode"> 
     <h:outputText value="#{node}" /> 
     </p:treeNode> 
    </p:tree> 
</h:form> 

:를 통해 viewProject.xhtml를

@ViewScoped 
@Component("treeBean") 
@ManagedBean 
public class TreeManagedBean{ 

private Project selectedProject; 

public Project getSelectedProject(){ 
    return selectedProject; 
} 

public void setSelectedProject(Project project){ 
    this.selectedProject = project; 
} 

    public void onNodeSelect(NodeSelectEvent event) { 
      this.selectedProject = (Project)event.getTreeNode().getData(); 
      FacesContext context = FacesContext.getCurrentInstance(); 
      ConfigurableNavigationHandler handler = (ConfigurableNavigationHandler)    context.getApplication().getNavigationHandler(); 
      handler.performNavigation("viewProject"); 
     } 

을 그리고 나서로드 얼굴-설정

그 동안 나는 아약스 이벤트가 나무에 선택 정의 .xml을 만들고 다른 managedBean의 속성을 채 웁니다.

@Component("projectView") 
@ViewScoped 
@ManagedBean 
public class ProjectView { 
    @ManagedProperty("#{treeBean.selectedProject}") 
    private Project project; 
} 

보기로드 s의 오류는 없지만 속성은 설정되지 않습니다. ajax 호출이 작동하고 첫 번째 bean에서 속성을 설정 중입니다. 이것을하는 방법입니까?

+0

윌 옵저버 패턴이 당신을 위해 할을? 그것에 대해 생각하십시오. –

+0

@SanyamGoel 귀하의 의견은 OP의 질문과 관련이 없습니다. 권력을 강화하기 위해 JSF와 라이브러리에 대해 알지 못하면 주석 달기를 중단하십시오. –

+0

트리 선택 속성이'# {treeBean.selectedNode}'로되어 있고 관리 빈에서'# {treeBean.selectedProject} '를 호출하고 있는지 확인 했습니까? 그것은 같은 이름이어야합니다. –

답변

0

나는 단지 그것을 위해 내가 기본 생성자 제공 할 의무가되었으며, managedBeans에 식별자를 추가 해결 :

@ViewScoped 
@Component("treeBean") 
@ManagedBean("treeBean") 
public class TreeManagedBean{ 
    public TreeManagedBean(){} 
} 

@Component("projectView") 
@ViewScoped 
@ManagedBean("projectView") 
public class ProjectView { 
    @ManagedProperty("#{treeBean.selectedProject}") 
    private Project project; 
    public ProjectView(){} 
} 
관련 문제