树上的重复 ID(Primefaces 5.2 和 Liferay 6.2)
Duplicate ID on Tree (Primefaces 5.2 & Liferay 6.2)
我无法在 liferay 中使用 primefaces 树组件,我不明白为什么。
我尝试了很多 hack(范围,UiTreeNode/TreeNode,没有节点,...)但是当我 submit/refresh 我的页面(ajax 或非 ajax).
我没有其他想法所以我来找你...
xhtml :
<p:tree value="#{treeBasicView.root}" var="node">
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
java :
@ManagedBean(name = "treeBasicView")
@ViewScoped
public class BasicView implements Serializable
{
private TreeNode root;
@PostConstruct
public void init()
{
root = new DefaultTreeNode("Root", null);
TreeNode node0 = new DefaultTreeNode("Node 0", root);
TreeNode node1 = new DefaultTreeNode("Node 1", root);
TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);
TreeNode node10 = new DefaultTreeNode("Node 1.0", node1);
node1.getChildren().add(new DefaultTreeNode("Node 1.1"));
node00.getChildren().add(new DefaultTreeNode("Node 0.0.0"));
node00.getChildren().add(new DefaultTreeNode("Node 0.0.1"));
node01.getChildren().add(new DefaultTreeNode("Node 0.1.0"));
node10.getChildren().add(new DefaultTreeNode("Node 1.0.0"));
root.getChildren().add(new DefaultTreeNode("Node 2"));
}
public TreeNode getRoot()
{
return root;
}
}
好的,我找到了。也许我可以帮助别人。
你要知道liferay bridge是通过Primefaces大版本认证的,不是Elite版本。但是补丁 5.2.4 更改了 UITree#visitTree 的实现,桥似乎无法处理此修改。我不知道为什么,但它不能。所以我覆盖了一些方法(visitTree/visitFacets/visitNodes)以忽略与访问节点相关的布尔值的改进(说实话,我不太明白)。 Aaaa 它有效! Q.E.D
我无法在 liferay 中使用 primefaces 树组件,我不明白为什么。 我尝试了很多 hack(范围,UiTreeNode/TreeNode,没有节点,...)但是当我 submit/refresh 我的页面(ajax 或非 ajax).
我没有其他想法所以我来找你...
xhtml :
<p:tree value="#{treeBasicView.root}" var="node">
<p:treeNode>
<h:outputText value="#{node}" />
</p:treeNode>
</p:tree>
java :
@ManagedBean(name = "treeBasicView")
@ViewScoped
public class BasicView implements Serializable
{
private TreeNode root;
@PostConstruct
public void init()
{
root = new DefaultTreeNode("Root", null);
TreeNode node0 = new DefaultTreeNode("Node 0", root);
TreeNode node1 = new DefaultTreeNode("Node 1", root);
TreeNode node00 = new DefaultTreeNode("Node 0.0", node0);
TreeNode node01 = new DefaultTreeNode("Node 0.1", node0);
TreeNode node10 = new DefaultTreeNode("Node 1.0", node1);
node1.getChildren().add(new DefaultTreeNode("Node 1.1"));
node00.getChildren().add(new DefaultTreeNode("Node 0.0.0"));
node00.getChildren().add(new DefaultTreeNode("Node 0.0.1"));
node01.getChildren().add(new DefaultTreeNode("Node 0.1.0"));
node10.getChildren().add(new DefaultTreeNode("Node 1.0.0"));
root.getChildren().add(new DefaultTreeNode("Node 2"));
}
public TreeNode getRoot()
{
return root;
}
}
好的,我找到了。也许我可以帮助别人。
你要知道liferay bridge是通过Primefaces大版本认证的,不是Elite版本。但是补丁 5.2.4 更改了 UITree#visitTree 的实现,桥似乎无法处理此修改。我不知道为什么,但它不能。所以我覆盖了一些方法(visitTree/visitFacets/visitNodes)以忽略与访问节点相关的布尔值的改进(说实话,我不太明白)。 Aaaa 它有效! Q.E.D