通过ManagedBean选择节点时,树表PrimeFaces不起作用

通过ManagedBean选择节点时,树表PrimeFaces不起作用,primefaces,tree,treeview,selection,selecteditem,Primefaces,Tree,Treeview,Selection,Selecteditem,我有一个p:树被自动加载,然后我需要在树中的节点内进行搜索,我进行搜索并返回我找到的第一个节点,我想将其作为所选节点,但当我通过代码执行此操作时,树停止工作,我无法再取消选择或扩展它,所有操作都停止运行 我的xhtml: <m:linha> <m:autocomplete size="4" bean="#{controller}" itemLabel="descricaoCompleta" dropdown="true" minQueryLength="1" value

我有一个p:树被自动加载,然后我需要在树中的节点内进行搜索,我进行搜索并返回我找到的第一个节点,我想将其作为所选节点,但当我通过代码执行此操作时,树停止工作,我无法再取消选择或扩展它,所有操作都停止运行

我的xhtml:

<m:linha>
 <m:autocomplete size="4" bean="#{controller}" itemLabel="descricaoCompleta"   dropdown="true"  minQueryLength="1" value="#{controller.objetoFiltro.tipoObjeto}" method="listarTipoObjeto" label="Tipo de Objeto" maxResults="100"/>
 <m:input value="#{controller.objetoFiltro.nome}" label="Descrição"  size="6"/>
<div class="ui-grid-col-2">
 <br/>
 <p:commandButton action="#{controller.pesquisar()}" styleClass="btn btn-primary float-left" value="Pesquisar" update="@form"/>
</div>
</m:linha>
<m:linha>
<div class="ui-grid-col-12">
 <p:tree id="treeObjetos" value="#{controller.mapeamentos}" var="objeto" style="width: 100%" selectionMode="single" selection="#{controller.objetoSelecionado}" animate="true">
  <p:treeNode expandedIcon="ui-icon-folder-open" collapsedIcon="ui-icon-folder-collapsed">
   <h:outputText value="#{objeto.nome}"/>
  </p:treeNode>
 </p:tree>
 </div>
 </m:linha>


我的ManagedBean:

private Objeto objetoFiltro;

private TreeNode mapeamentos;

private TreeNode objetoSelecionado;

@PostConstruct
private void init() {
    List<Objeto> objetosRoot = objetoDAO.pesquisarObjetosPais();
    mapeamentos = new DefaultTreeNode();
    for (Objeto objeto : objetosRoot) {
        TreeNode filho = new DefaultTreeNode(objeto, mapeamentos);
        criarNode(objeto, filho);
    }
}

private void criarNode(Objeto objeto, TreeNode parentNode) {
    List<Objeto> objetos = objetoDAO.recuperarObjetosFilhos(objeto);
    for (Objeto item : objetos) {
        TreeNode filho = new DefaultTreeNode(item, parentNode);
        criarNode(item, filho);
    }
}

public void pesquisar() {
    TreeNode node = objetoPesquisado();
    node.setSelectable(true);
    node.setSelected(true);
}

public TreeNode objetoPesquisado() {
    TreeNode retorno = null;

    for (TreeNode item : mapeamentos.getChildren()) {
        if (objetoFiltro.getNome() != null && !objetoFiltro.getNome().isEmpty()) {
            if (((Objeto) item.getData()).getNome().contains(objetoFiltro.getNome())) {
                return item;
            }
        }
    }

    return retorno;
}
private Objeto objetoFiltro;
私人TreeNode mapeamentos;
私人TreeNode objetoSelecionado;
@施工后
私有void init(){
List objetoroot=objetoDAO.pesquisarObjetosPais();
mapeamentos=新的DefaultTreeNode();
for(Objeto-Objeto:objetoroot){
TreeNode filho=新的默认TreeNode(objeto,mapeamentos);
克里亚诺德(奥布杰托,费罗);
}
}
私有void criarNode(Objeto Objeto,TreeNode parentNode){
列表objetos=objetoDAO.RECURPERABROJETOSFILHOS(objeto);
用于(对象项:对象项){
TreeNode filho=新的默认TreeNode(项,父节点);
克里亚诺德(项目,费罗);
}
}
公共空间{
TreeNode=objetoPesquisado();
node.setSelectable(true);
node.setSelected(true);
}
公共TreeNode objetoPesquisado(){
TreeNode returno=null;
对于(TreeNode项:mapeamentos.getChildren()){
if(objetoFiltro.getNome()!=null&&!objetoFiltro.getNome().isEmpty()){
如果(((Objeto)item.getData()).getNome()包含(objetoFiltro.getNome()){
退货项目;
}
}
}
返回号;
}

尝试将commandButton ajax属性更改为ajax=“false”非常好,谢谢