在selectionChanged in rich:tree中丢失所选节点的值

时间:2015-11-25 21:58:43

标签: jsf tree richfaces

我正在使用Richfaces 4.5.7.Final,恰好是组件rich:tree

通过使用方法 selectionChanged 恢复全局变量中所选节点的值,但是当我继续从另一个方法显示所选节点的值时,值为空。

为什么会这样?

<rich:tree id="treeCuadroClasificacion"
      value="#{cuadroClasificacionBean.raizCuadroClasificacion}"
      toggleType="client" selectionType="ajax"
      selectionChangeListener="#{cuadroClasificacionBean.selectionChanged}"
      var="node">
      <rich:treeNode iconExpanded="/resources/images/cuadroClasificacion/#{node.nodo.nombreImagenAsociada}"
            iconCollapsed="/resources/images/cuadroClasificacion/#{node.nodo.nombreImagenAsociada}"
            iconLeaf="/resources/images/cuadroClasificacion/#{node.nodo.nombreImagenAsociada}"
            title="#{node.nodo.nombreNodo}">
            <h:outputText value="#{node.nodo.nombreNodo}"
               styleClass="titulosNodoNivel1" />
      </rich:treeNode>
</rich:tree>

selectionChanged 代码,显示存储在变量 nodoSeleccionado

中的值
public void selectionChanged(TreeSelectionChangeEvent selectionChangeEvent) {
    RichFacesTreeNodoCC node = null;
    List<Object> selection = new ArrayList<Object>(
            selectionChangeEvent.getNewSelection());
    Object currentSelectionKey = selection.get(0);
    UITree tree = (UITree) selectionChangeEvent.getSource();
    Object storedKey = tree.getRowKey();
    tree.setRowKey(currentSelectionKey);
    node = (RichFacesTreeNodoCC) tree.getRowData();
    nodoSeleccionado = node;
    tree.setRowKey(storedKey);

    logger.info("*** NODO SELECCIONADO ***" + nodoSeleccionado);
    logger.info("***** NODO SELECCIONADO *****"
            + nodoSeleccionado.getNodo().getIdNodoDescripcionArchivo());
    idNodoADescribir = nodoSeleccionado.getNodo()
            .getIdNodoDescripcionArchivo();
    logger.info("::: ID NODO A DESCRIBIR :::" + idNodoADescribir);
}

另一种方法,其中值为 nodoSeleccionado的空对象

public void irVistaListaDescripcion() throws IOException {
    logger.info("==== NODO A ENVIAR ===" + nodoSeleccionado);
    logger.info("==== NODO A ENVIAR ===" + nodoSeleccionado);
    variableSession.put("nodoSeleccionado", nodoSeleccionado);
  //session.setAttribute("idNodoADescribir", idNodoADescribir);     
}

log,我们可以看到刷新视图

18:05:13,470 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-26) ::: ingresando cuadro clasificacion :::
18:05:15,751 INFO  [bo.gob.siahcomibol.bean.ActionCRUDBase] (default task-32) *** ACTION CRUD BASE ***
18:05:15,751 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-32) ::: ingresando cuadro clasificacion :::
18:05:15,771 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-32) *** NODO SELECCIONADO ***GERENCIA ADMINISTRATIVA FINANCIERA
18:05:15,771 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-32) ***** NODO SELECCIONADO *****124
18:05:15,771 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-32) ::: ID NODO A DESCRIBIR :::124
18:05:26,563 INFO  [bo.gob.siahcomibol.bean.ActionCRUDBase] (default task-33) *** ACTION CRUD BASE ***
18:05:26,563 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-33) ::: ingresando cuadro clasificacion :::
18:05:26,563 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-33) ==== NODO A ENVIAR ===null
18:05:26,564 INFO  [bo.gob.siahcomibol.kernel.cuadroClasificacion.bean.CuadroClasificacionBean] (default task-33) ==== NODO A ENVIAR ===null

0 个答案:

没有答案