getselectednode из другого bean-компонента (primefaces)

У меня есть ManagedBean для treeNode и другого управляемого компонента, где я хотел бы получить selectedNode, и из getType я хотел бы выполнить некоторый код, но проблема, которую я не могу получить, вызывает selectedNode каждый раз, когда я получаю это:

 java.lang.NullPointerException: javax.faces.FacesException: #{dimMan.makeDim()}: java.lang.NullPointerException

и это мои два управляемых компонента:

@ManagedBean
@ViewScoped
public class TreeBean implements Serializable {

    private static final long serialVersionUID = 2417620239014385855L;
    private TreeNode root;
    private TreeNode selectedNode;
.....

и другой, где я хотел бы проверить тип выбранного узла:

@ManagedBean(name = "dimMan")
@SessionScoped
public class DimenssionManaged {

    @EJB
    DimensionDaoRemote dimService;

    @Inject
    TreeBean treeSelected;
    String select;

    public TreeBean getTreeSelected() {
        return treeSelected;
    }
    public void setTreeSelected(TreeBean treeSelected) {
        this.treeSelected = treeSelected;
    }
    public void makeDim(){

        System.out.println("adding dimen");
        fkey=tTable.getSelectedFk();
        dimUpdate.setFk_dimension(fkey);
        dimUpdate.setType_dimension(selectedType);
        select=treeSelected.getSelectedNode().getParent().getType();

        System.out.println(select);

        if (select=="cube"){
            CubeBase cub=cubManged.getCubUpdate();
            dimUpdate.setCube(cub);
            dimService.creat_dimension(dimUpdate);
        }
        else {
            SchemaBase sh=shmanged.getSchema();
            dimUpdate.setSchema(sh);
            dimService.creat_dimension(dimUpdate);
        }


    }

я также пытаюсь использовать эту аннотацию @ManagedProperty(value =***), но это не сработало, так что мне делать, чтобы получить тип selectedNode из другого ManagedBean?


person Hamdi Dousdou    schedule 25.07.2014    source источник
comment
DimenssionManaged ManagedBean связан с другой страницей? Если это так, как только вы перейдете к TreeBean, он потеряет свои данные, поскольку он находится в ViewScoped. Опубликуйте код Facelet.   -  person Kishor Prakash    schedule 25.07.2014
comment
Спасибо, это работа, хорошая работа, Кишор П.   -  person Hamdi Dousdou    schedule 26.07.2014
comment
Хорошо, я опубликую это как ответ.   -  person Kishor Prakash    schedule 26.07.2014


Ответы (1)


DimenssionManaged ManagedBean связан с другой страницей? Если это так, как только вы перейдете к TreeBean, он потеряет свои данные, поскольку он находится в @ViewScoped.

Измените TreeBean на @SessionScoped, чтобы сохранить данные даже после навигации, но повторная очистка/обновление данных вызывает беспокойство.

person Kishor Prakash    schedule 26.07.2014