0

我知道 primefaces 选项列表只允许传输事件,例如

<p:ajax event="transfer" listener="#{bean.onTransfer}" />

但我正在寻找一个 onTargetSelected 事件。有没有办法模拟它?

我想到了一个与单击事件绑定的 JQuery 函数,但我不知道在哪个元素上。我看到当我在目标列表中选择一行时,li的类正在转换为ui-state-highlight。有没有办法用 JQuery 检测类的变化?

为了在事件被触发时调用 bean 方法,我想到了 primefaces remoteCommand 来发送我的对象的 ID。

你对这个活动有什么想法吗?

注意:我看到源代码中有一个带有目标值的选择,但是每个项目的选定值都是“选定的”,我不知道是否与此有关。

谢谢你的帮助

4

1 回答 1

0

我有一个窍门。我正在使用这个 JQuery 函数:

$(document).ready(function(){
    $('.ui-picklist-target .ui-picklist-item td').click(function() {
        var id = $(this).closest("li").attr("data-item-value");
        $('[id$=selectedItemId]').val(id); // Setting the value of my hidden input
        updateSelectedTarget(); // Calling the remoteCommand function
    });
});

我已将此添加到我的 xhtml 页面

<h:form>
    ...
    <p:pickList ...>

    </p:pickList>

    <h:inputHidden id="selectedItemId" value="#{modifierUOBean.selectedTargetId}"/>
    <p:remoteCommand name="updateSelectedTarget" actionListener="#{modifierUOBean.onSelectedTarget}"/>
</h:form>

还有豆子:

private int selectedTargetId; // and getters and setters

public void onSelectedTarget() {
    // Do what you want with selectedTargetId which contains the id of selected item
}
于 2013-07-12T09:38:36.403 回答