1
我開發了一個帶有primefaces樹組件的導航菜單。樹節點中有一個Project對象作爲數據。我希望能夠加載一個視圖,其中包含當我單擊每個項目時動態加載的項目詳細信息。如何將對象傳遞到素數表上的樹視圖
對於我已經定義了在樹中的AJAX事件選擇:
<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>
其中在treeManagedBean調用onNodeSelectMethod:通過
@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");
}
然後我加載viewProject.xhtml面孔,配置.xml,並填充其他managedBean中的屬性:
@Component("projectView")
@ViewScoped
@ManagedBean
public class ProjectView {
@ManagedProperty("#{treeBean.selectedProject}")
private Project project;
}
視圖加載沒有任何錯誤,但屬性從未設置。 ajax調用起作用,並在第一個bean中設置屬性。這是做到這一點的方式嗎?
威爾Observer模式爲你做?想想看吧 –
@SanyamGoel你的評論與OP的問題沒有任何關係。如果您不瞭解JSF和庫以增強其功能,請停止評論。 –
您是否檢查過您的樹選擇屬性爲'#{treeBean.selectedNode}',並且您在託管bean中調用了'#{treeBean.selectedProject}'?它應該是同一個名字。 –