【问题标题】:p:remoteCommand won't fire bean methodp:remoteCommand 不会触发 bean 方法
【发布时间】:2015-05-06 13:17:33
【问题描述】:

我在复合组件中有简单的 primefaces remoteCommand,它不会触发 back bean 中的方法。

<h:form id="frm1" prependId="false">
         <p:remoteCommand name="rc1" 
            actionListener="#{Bean1.preloadMenu()}" 
            process="@this"
            onstart="alert('xxx')"
            autoRun="true"
         />
         ...

RemoteCommand 有效,它运行 onstart 客户端脚本,但不会触发 bean 中的方法(从不进入方法,就好像它不存在一样)。我在客户端或服务器端没有收到错误。

【问题讨论】:

  • 我只能涉及到第8项
  • 如果带有 UICommand 按钮的
    的父级被 ajax 请求预先渲染/更新,那么第一个操作将始终失败。第二个和后续操作将起作用。这是由视图状态处理中的错误引起的,该错误报告为 JSF 规范问题 790,目前计划在 JSF 2.3 中修复。对于较旧的 JSF 版本,您需要在 的渲染中明确指定 的 ID,或者在此答案中使用脚本。
  • 但是我之前也遇到过类似的情况,对话框内的复合组件是在页面上进行一些操作后渲染的,并且组件和对话框内的所有按钮都可以正常工作(所有按钮都正确触发,不确定我是否有远程按钮)
  • Omnifaces 针对当前版本的 jsf 对此进行了修复

标签: jsf primefaces composite-component remotecommand


【解决方案1】:

我将结束这个话题。我通过将代码放入初始化(@PostConstruct)方法解决了这个问题。不想那样做,但是这个对话框不经常使用,并且 bean 只与这个组件相关联,所以它不应该造成太大的损害。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-24
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    相关资源
    最近更新 更多