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

Posted

技术标签:

【中文标题】当我单击 p:tree 时如何从 p:ajax 侦听器获取其他组件值【英文标题】:How to get other component value from p:ajax listener when I click on p:tree 【发布时间】:2015-09-07 04:49:14 【问题描述】:

我有一个问题,我需要你的帮助!!!我想在单击树时获取 p:selectOneListbox 的选定值,但该值始终为空,即使我先单击 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);

我无法打印变量“selectedRoleId”,因为它为空,但如果我使用按钮方法调用此变量,我可以获得它的值。我该怎么办?感谢您阅读我的问题!

【问题讨论】:

【参考方案1】:

问题是当您从列表框中选择某些内容时,在您发送表单或进行部分发送之前,它在支持 bean 中是不可见的,因此为空值。将部分处理添加到&lt;p:selectOneListbox&gt; 并再次检查:

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

还有类似的话题: https://***.com/a/14988129/3803447

【讨论】:

以上是关于当我单击 p:tree 时如何从 p:ajax 侦听器获取其他组件值的主要内容,如果未能解决你的问题,请参考以下文章

p:tree ajax 加载节点不显示展开图标

当我单击构建器的按钮时,如何从文本字段传递信息?

当我单击 vue 组件上的子组件时,如何从父组件更新数据?

单击单元格文本时如何从单元格中删除文本

当我在 swift 4 中单击 uitableviewcell 时如何传递数据?

当我从一个选项卡单击到另一个选项卡时,如何使TabLayout中的选项卡不可滚动