当我点击p:tree时,如何从p:ajax监听器获取其他组件值

时间:2015-09-07 04:49:14

标签: ajax jsf primefaces

我有问题,我需要你的帮助!当我点击树时,我想得到p:selectOneListbox的选定值,但是值总是为null,即使我先点击p:selectOneListbox。这是我的xhtml代码:

<h:form>
<p:selectOneListbox id="selectRole"
            value="#{grandUseAuthoritiesBean.selectedRoleId}"               
            filter="true" filterMatchMode="contains">
            <f:selectItems value="#{grandUseAuthoritiesBean.roleList}"
                var="role" itemLabel="#{role.code}" itemValue="#{role.roleId}" />
</p:selectOneListbox>
<p:tree value="#{grandUseAuthoritiesBean.root}"
                selectionMode="single" var="node"
                style="font-size:13px; width:100%;border-width:0">
                <p:treeNode icon="ui-icon-calculator">
                    <h:outputText value="#{node}" />
                </p:treeNode>
                <p:ajax event="select" update="@([id$=privilegeChecbox])"
                    listener="#{grandUseAuthoritiesBean.onNodeSelect()}">
                </p:ajax>
            </p:tree>
</h:form>

这是我的管理bean的代码:

public String selectedRoleId;
public String getSelectedRoleId() {
    return selectedRoleId;
}
public void setSelectedRoleId(String selectedRoleId) {
    this.selectedRoleId = selectedRoleId;
}
public void onNodeSelect(NodeSelectEvent event) {
    if (selectedRoleId!=null)
     System.out.println("selected Role Id: "+ this.selectedRoleId);
}

我无法打印变量&#34; selectedRoleId&#34;因为它是null但是如果我使用按钮&#39;方法来调用这个变量,我可以得到它的值。我该怎么办?感谢您阅读我的问题!

1 个答案:

答案 0 :(得分:1)

事情就是当你从列表框中选择某些内容时,在发送表单或执行部分发送之前,它在辅助bean中是不可见的,因此为空值。将部分处理添加到<p:selectOneListbox>并再次检查:

<p:ajax process="@this" partialSubmit="true" />

也有类似话题: https://stackoverflow.com/a/14988129/3803447