Primefaces 未调用p:treeTable中CommandLink/CommandButton的操作

Primefaces 未调用p:treeTable中CommandLink/CommandButton的操作,primefaces,treetable,Primefaces,Treetable,我下载了primefaces 3.1,并将其添加到我的项目中。我尝试将commandButton/commandLink添加到树表的列中 但是除了根行之外,列中commandButton/commandLink的操作不会被调用 有什么问题吗?谢谢 编辑: xhtml中的树表: <p:treeTable var="catalog" value="#{catalogSelectBean.root}" lazy="true" selection="#{catalogSelectBean.sele

我下载了primefaces 3.1,并将其添加到我的项目中。我尝试将commandButton/commandLink添加到树表的列中 但是除了根行之外,列中commandButton/commandLink的操作不会被调用

有什么问题吗?谢谢

编辑:

xhtml中的树表:

<p:treeTable var="catalog" value="#{catalogSelectBean.root}" lazy="true" selection="#{catalogSelectBean.selectedNode}" selectionMode="single">
    <p:column>
        <f:facet name="header">
        <h:outputText value="Katalog Name" />
        </f:facet>
        <h:outputText value="#{catalog.name}" />
    </p:column>

  <p:column width="100">
    <f:facet name="header">
      <h:outputText value="Katalog Desc"/>
    </f:facet>
    <h:outputText value="#{catalog.description}"/>
  </p:column>

  <p:column>
  <p:commandButton action="#{formProductRelationView.updateProductListForSelectedCatalog()}"
                                                update=":main_form:selectProductTable"
        value="Bring Products">
    </p:commandButton>
    </p:column>
</p:treeTable>

豆子:

@组件(“catalogSelectBean”)
@范围(“请求”)
公共类CatalogSelectBean实现了可序列化{
私有静态最终长serialVersionUID=1L;
@自动连线
私人编目服务;
独活根;
私有树节点选择节点;
私有双列表模型pickListCatalogs;
公共树节点getRoot(){
返回根;
}
公共树节点getSelectedNode(){
返回selectedNode;
}
公共无效集合selectedNode(TreeNode selectedNode){
this.selectedNode=selectedNode;
}
nodeselect上的公共无效(NodeSelectEvent事件){
Catalog=(Catalog)event.getTreeNode().getData();
FacesMessage=新的FacesMessage(FacesMessage.SEVERITY_INFO,“Selected”,g.getName());
FacesContext.getCurrentInstance().addMessage(空,消息);
}
公共目录selectbean(){
}
@施工后
公众假期{
createRoot();
createPickListModel();
}
私有void createPickListModel(){
//球员
List source=catalogService.loadChilds(catalogService.getRootCatalog());
列表目标=新的ArrayList();
pickListCatalogs=新的DualListModel(源、目标);
}
私有void createRoot(){
目录g=null;
g=catalogService.getRootCatalog();
root=新的DefaultTreeNode(“root”,null);
TreeNode caRoot=新的默认TreeNode(g,根);
生成树(caRoot,g);
}
专用void generateTree(TreeNode subRoot,目录g){
对于(目录p:g.getChildCatalogs()){
TreeNode0=新的默认TreeNode(p,子轨迹);
如果(p.getChildCatalogs()!=null&&p.getChildCatalogs().size()>0)
生成树(节点0,p);
}
}
公共树(){
root.setSelected(false);
}
公共DualListModel getPickListCatalogs(){
返回pickListCatalogs;
}
}
我还有一个formProductRelationView bean,它具有updateProductListForSelectedCatalog()方法


谢谢您的关注。

根据您提供的信息,只有上帝知道。@CagatayCivici,我编辑了这个问题。谢谢你的时间。我放弃了在每一行中添加commandlink的固执。我正在尝试将选择添加到treetable,并使用treetable之外的按钮进行选择。谢谢
@Component("catalogSelectBean")
@Scope("request")
public class CatalogSelectBean implements Serializable {

    private static final long serialVersionUID = 1L;

    @Autowired
    private CatalogService catalogService;
    private TreeNode root;
    private TreeNode selectedNode;  


    private DualListModel<Catalog> pickListCatalogs;


    public TreeNode getRoot() {
        return root;
    }

    public TreeNode getSelectedNode() {
        return selectedNode;
    }

    public void setSelectedNode(TreeNode selectedNode) {
        this.selectedNode = selectedNode;
    }

    public void onNodeSelect(NodeSelectEvent event) {
        Catalog g = (Catalog)event.getTreeNode().getData();
        FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Selected", g.getName());
        FacesContext.getCurrentInstance().addMessage(null, message);
    }

    public CatalogSelectBean() {
    }

    @PostConstruct
    public void unLoad(){

        createRoot();
        createPickListModel();
    }


    private void createPickListModel() {
        //Players  
        List<Catalog> source = catalogService.loadChilds(catalogService.getRootCatalog());
        List<Catalog> target = new ArrayList<Catalog>();  

        pickListCatalogs = new DualListModel<Catalog>(source, target);  

    }

    private void createRoot() {
        Catalog g = null ;

            g = catalogService.getRootCatalog();

        root = new DefaultTreeNode("Root", null);

        TreeNode caRoot = new DefaultTreeNode(g,root);
        generateTree(caRoot,g);

    }

    private void generateTree(TreeNode subRoot, Catalog g) {

        for(Catalog p : g.getChildCatalogs()){
            TreeNode node0 = new DefaultTreeNode(p,subRoot);
            if(p.getChildCatalogs()!= null && p.getChildCatalogs().size()>0)
                generateTree(node0, p);
        }
    }

    public void resetTree() {
        root.setSelected(false);
    }



    public DualListModel<Catalog> getPickListCatalogs() {
        return pickListCatalogs;
    }



}