1

您如何在 PrimeFaces 中从 Javascript 调用 bean 方法?

我有以下菜单项:

<p:menuitem id="toggleAlarms" icon="ui-icon-cancel" rendered="#{navigationBean.admin}" value="Cancel Alert" update=":alarmMessages"  action="#{alarmsBean.toggleAlertOff()}"/>

当我在 UI 中单击该项目时,将调用该方法。

但是当我有这个元素时:

<p:messages id="alarmMessages">
    <script>
    jQuery('#alarmMessages').effect("pulsate", {times:5}, 1000 );
    jQuery('#alarmMessages').show();
    $('#alarmMessages').click(function() {
        jQuery('#toggleAlarms').click();
        alert('fool');
    })
    </script>
</p:messages>

如果我单击 UI 上的消息对象,我可以看到带有傻瓜的警报消息。

但是,我从来没有看到 toggleAlarms.click() 方法调用了 alarmsBean.toggleAlertOff() 调用。

难道我做错了什么?

4

1 回答 1

2

有机会#{navigationBean.admin}回来false吗?

因为如果是这样,您将无法在 DOM 中找到它...(也许更好地使用style=display:none

此外,如果菜单项在表单内,您的选择器可能是错误的,请尝试在jQuery('#someFormID\\:toggleAlarms').click();您的网页上查看源代码以查看菜单项的正确 id

最后尝试使用 commandButton 进行相同的操作(不确定 menuitem 是否会按预期响应.click()

更新

为了检查您的 jquery 选择器是否正确使用alert($('#toggleAlarms').length)而不是alert('fool');

于 2012-07-23T20:02:19.293 回答