我有一个<o:tree>
我正在显示人员名单和每个人有孩子的东西以及每个孩子有孩子的东西,其中孩子的水平未知
数据显示正确,但显示的节点是<h:commandLink>
,其操作是java bean函数
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)}
id child 1.1被点击参数double childId
被发送2.2在任何孩子被点击的情况下,最后一个参数被发送到哪里以防所有值都正确显示
答案 0 :(得分:0)
我发送一个参数f:param
而不是函数发送的参数
通过这种方式,每个节点都可以正确发送id
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>