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에서 속성을 설정 중입니다. 이것을하는 방법입니까?
윌 옵저버 패턴이 당신을 위해 할을? 그것에 대해 생각하십시오. –
@SanyamGoel 귀하의 의견은 OP의 질문과 관련이 없습니다. 권력을 강화하기 위해 JSF와 라이브러리에 대해 알지 못하면 주석 달기를 중단하십시오. –
트리 선택 속성이'# {treeBean.selectedNode}'로되어 있고 관리 빈에서'# {treeBean.selectedProject} '를 호출하고 있는지 확인 했습니까? 그것은 같은 이름이어야합니다. –