Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Проблемка с JSF


Автор: DENIS7 2.5.2008, 15:33
Я новичек в JAVA, поэтому прошу не судить строго.
Использую Netbeans 6.1 и JSF (woodstook)
Пытаюсь разобраться с JSF и сделать дерево, в котором все элементы будут создаваться динамически 
при обновлении страницы, т.е. считываться из базы данных и сразу на каждый элемент будет вешаться действие - Action.


    public void prerender() {
        boolean hasNext=true;
        Integer CodeID=0;
        Integer ID=0;
        int T=0;
        Integer ParentID=0;

        TreeNode Node = null;
        TreeNode AddedNode = null;
        String NameClient=null;
        
            ArrayList<Integer> ListClients=new ArrayList();
            List Child=treeC.getChildren();
            Child.clear();
            try {
                ((SessionBean1)getBean("SessionBean1")).getV_group_clientsRowSet().execute();
                hasNext = v_group_clientsDataProvider.cursorFirst();
                while (hasNext) {
                    ID = Integer.valueOf(v_group_clientsDataProvider.getValue("GROUP_CLIENT_ID").toString());
                    NameClient=v_group_clientsDataProvider.getValue("GROUP_CLIENT_NAME").toString();
                    ParentID = Integer.valueOf(v_group_clientsDataProvider.getValue("GROUP_CLIENT_PARENT").toString());
                    Node=new TreeNode();
                    Node.setId("CLIENT"+CodeID.toString() );
                    Node.setText(NameClient);
                    Node.setExpanded(true);
                    Node.addActionListener(new ClientsActionListener());
                    CodeID=CodeID+1;
                    AddedNode=null; 
                    for (T=0; T<ListClients.size(); T++){
                        if (ParentID.equals(ListClients.get(T))==true ){
                            AddedNode=treeC.getChildNode("CLIENT"+String.valueOf(T) ) ;
                        }
                    }
                    ListClients.add(ID);
                    if (AddedNode==null){
                        Child.add(Node);
                    }else{
                        AddedNode.getChildren().add(Node);
                    }                    
                    hasNext = v_group_clientsDataProvider.cursorNext();                    
                }
            } catch (Exception ex) {
                Logger.getLogger(PageClients.class.getName()).log(Level.SEVERE, null, ex);
            }
            ListClients.clear();
            buttonSet.addActionListener(new ClientsActionListener());
    }


public class ClientsActionListener extends ActionListenerImpl {
    private PhaseId phaseId = PhaseId.RENDER_RESPONSE;

    public PhaseId getPhaseId( ) {
        return phaseId;
    }

    public void setPhaseId(PhaseId phaseId) {
        this.phaseId = phaseId;
    }

    public void processAction(ActionEvent arg0) throws AbortProcessingException {
        //throw new UnsupportedOperationException("Not supported yet.");
        System.out.print("TEST");        
    }
    
    

}



Самое интересное что на событие на кнопку buttonSet срабатывает, а вот на элемент дерева TreeNode нет.

Вопрос такой - как в JSF можно это сделать, какими путями?

Автор: necromancer 5.5.2008, 13:12
а можно еще привести и код разметки?

Автор: DENIS7 11.5.2008, 21:11
Сорри, нашел решение.

Добавил после строки 
Node.setExpanded(true);
следующее
Node.setActionExpression(exFactory.createMethodExpression(elContext, "#{PageClients.SetTree_action}", String.class, new Class<?>[0]));


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)