如何从PrimeFaces中的Javascript调用bean方法

时间:2012-07-23 19:22:31

标签: jsf-2 primefaces

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

我有以下menuItem:

<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>

如果我点击用户界面上的消息对象,我可以看到傻瓜的警告消息。

但是,我从未看到toggleAlarms.click()方法调用alarmsBean.toggleAlertOff()调用。

我做错了吗?

1 个答案:

答案 0 :(得分:2)

#{navigationBean.admin}何时返回false

因为如果是这样你就无法在DOM中找到它......(也许最好使用style=display:none

另外,如果menuitem位于表单内,则您的选择器可能出错,请在网页上执行<{1}} 查看源以查看menuitem的正确ID

最后尝试使用commandButton(不确定menuitem是否会按预期响应jQuery('#someFormID\\:toggleAlarms').click();

<强>更新

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