我在Glassfish 3上运行Primefaces 3.2和JSF 2.0.
我已经尝试了很多,以编程方式从托管bean中设置所选节点.这包括设置所选节点,如下所示:
public void setSelectedTreeNode(String name) {
TreeNode root = treeBean.getRoot();
List<TreeNode> tree = root.getChildren();
for(TreeNode node:tree) {
if(node.getData().toString().contains(name)) {
System.out.println("found the node to select");
treeBean.setSelectedNode(node);
break;
}
}
RequestContext context = RequestContext.getCurrentInstance();
context.update(":navForm:treeSingle");
}
Run Code Online (Sandbox Code Playgroud)
"找到要选择的节点"将在终端中打印,但未在网页的树中选择节点.
树是这样的:
<h:form id="navForm">
<p:tree id="treeSingle" value="#{treeBean.root}" var="node"
selectionMode="single" styleClass="treeStyle"
selection="#{treeBean.selectedNode}"
cache="false"
>
<p:ajax event="select" listener="#{treeBean.onNodeSelect}" update=":mainForm" />
<p:treeNode>
<h:outputText value="#{node}" escape="false" />
</p:treeNode>
Run Code Online (Sandbox Code Playgroud)
编辑:TreeBean是这样构建的:
@ManagedBean
@SessionScoped
public class TreeBean implements Serializable {
private TreeNode root;
private TreeNode selectedNode;
public TreeBean() { …Run Code Online (Sandbox Code Playgroud) 我正在使用Primefaces 3.2和JSF 2.0.
我正在使用
<p:commandButton action="#{myBackingBean.action}" value="press me" />
Run Code Online (Sandbox Code Playgroud)
这对于ajaxStatus:
<p:ajaxStatus onstart="statusDialog.show();"
onsuccess="statusDialog.hide();"
rendered="#{myBackingBean.ajaxStatusRendered}"
id="ajaxStatusField" />
<p:dialog modal="true" widgetVar="statusDialog"
header="#{myBackingBean.ajaxStatusHeader}"
rendered="#{myBackingBean.ajaxStatusRendered}" id="ajaxPanel"
draggable="false" closable="false">
<p:graphicImage value="./images/ajaxloader.gif" />
</p:dialog>
Run Code Online (Sandbox Code Playgroud)
我在同一页面上也有很多其他的primefaces组件,但我只想在按下这个特定按钮时渲染p:ajaxStatus.对此有什么好的解决方案?ajaxStatus渲染每个ajax事件..