【问题标题】:How do you invoke a bean method from Javascript in PrimeFaces您如何在 PrimeFaces 中从 Javascript 调用 bean 方法
【发布时间】:2012-07-23 19:22:30
【问题描述】:

如何在 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() 调用。

我是不是做错了什么?

【问题讨论】:

  • 在渲染页面“查看源码”时,messages组件的id是什么?是“toggleAlarms”还是其他东西,例如“形式:toggleAlarms”?您可能没有传递正确的组件 ID。

标签: jsf-2 primefaces


【解决方案1】:

#{navigationBean.admin} 有没有可能返回 false

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

另外,如果 menuitem 在表单中,您的选择器可能是错误的,请尝试 jQuery('#someFormID\\:toggleAlarms').click(); 在您的网页上执行 view source 以查看 menuitem 的正确 ID

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

更新

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

【讨论】:

  • 您好,感谢您的回复。到目前为止,admin 始终为 true。
  • 好的,根据信息修改后它就像一个魅力。你提供的。非常感谢!这是我所做的: 修改菜单项: 还有这个:jQuery('#alarmMessages').effect("pulsate", {times:5}, 1000 ); jQuery('#alarmMessages').show(); $('#alarmMessages').click(function() { jQuery('#menuF\\:toggleAlarms').click(); })
猜你喜欢
  • 2015-05-13
  • 1970-01-01
  • 2016-06-14
  • 2015-12-10
  • 2016-12-07
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多