Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > 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])); |