2014-11-13 6 views
0

У меня есть <o:tree>, где я показываю список лиц и каждого человека, что у него есть дети и каждый ребенок, что у него есть дети, где уровень детей неизвестен
Данные отображаются корректно но отображаемый узел является <h:commandLink>, где его действие является функцией Java Beanui: repeat in o: treeNodeItem

фрагмент кода Java:

public class PersonController{ 
    //class Person having List of children 
    //some code 
    public void readChild(double childId){ 
    } 
    //some code 
} 

фрагмент кода Jsf:

<o:tree> 
    <o:treeNodeItem> 
     <ui:repeat var="person" value="#{personController.person}"> 
     #{person.id} 
     <ui:repeat var="child" value="#{person.children}"> 
      <h:commandLink value="#{child.id}" action="#{personController.readChild(child.id)}"/> 
     </ui:repeat> 
     </ui:repeat> 
    </o:treeNodeItem> 
</o:tree> 

Вынесено страница:

--person : 1 
----child : 1.1 
----child : 1.2 
--person : 2 
----child : 2.1 
----child : 2.2 

Основная проблема заключается в том, что #{personController.readChild(child.id)} идентификатора ребенок 1.1 щелкнул parameted double childId отправляется 2.2, где любой ребенок щелкнул последний параметр отправляются, где в случае, если все значения отображаются корректно

ответ

0

я послать вместо f:param В параметре параметра отправить с помощью функции

Таким образом, идентификатор отправки правильно каждым узлом

Отрывок из кода Java:

public class PersonController{ 
    //class Person having List of children 
    //some code 

    //remove parameter double childId 
    public void readChild(){ 
     // getting parameter 
     Map<String,String> params = 
       FacesContext.getExternalContext().getRequestParameterMap(); 
     String id = Double.parseDouble(params.get("id")); 
    } 
    //some code 
} 

Отрывок из Jsf кода:

<o:tree> 
    <o:treeNodeItem> 
     <ui:repeat var="person" value="#{personController.person}"> 
     #{person.id} 
     <ui:repeat var="child" value="#{person.children}"> 
      <h:commandLink value="#{child.id}" action="#{personController.readChild()}"> 
       <f:param name="id" value="#{child.id}"/> 
      </h:commandLink> 
     </ui:repeat> 
     </ui:repeat> 
    </o:treeNodeItem> 
</o:tree>