【问题标题】:p:remoteCommand JSF1064: Unable to find or serve resourcep:remoteCommand JSF1064:无法找到或提供资源
【发布时间】:2014-06-30 03:27:53
【问题描述】:

在我正在处理的程序中,在某个时间点,某个事件发生“work1Complete”后,我需要更新特定的页面组件。

为了做到这一点,我只找到了<p:remoteCommand> 标签。我是这样使用的:

<p:remoteCommand id="updater" name="updater" update="updatedList" action="#{getUpdates.getUpdates()}" actionListener="#{getUpdates.updateSearchParam}" />

然后我调用它存储在窗口对象中的函数:

window.updater({
    "updateString" : updateString
});

不用我搜索,我所拥有的唯一信息是:

警告:JSF1064:无法找到或提供资源,/[].xhtml。

在对执行进行一些研究后,我能够确定 getUpdates() 以某种方式被执行了 13 次,而 updateSearchParam() 被执行了 2 次。

getUpdates() 接收 void 并返回一个 Iterable。
updateSearchParam() 接收 void 并返回 void。
updatedList 永远不会更新。
使用浏览器控制台,我在它向服务器发出的 urlencoded 请求中看不到我给它的信息(上面的那个 js 对象)。

我正在使用 primefaces 4.0(及其所有依赖项),没有其他库。

【问题讨论】:

    标签: jsf primefaces remotecommand


    【解决方案1】:

    你的问题能说得更清楚吗?

    如果你的意思是你需要在某个事件被触发后执行一个动作,你可以在你的支持 bean 中有一个布尔方法,当事件完成时设置为 true,然后根据你的布尔结果呈现组件。

    例如:

    public class MyBean
    {
        public boolean isTrue()
          {
            if(abc.getVal()
             {
               return true;
             }
            return false;
          }
    }
    

    xhtml

    <h:outputLabel styleClass="formLabel" value="abc" rendered="#{myBean.true}" />
    

    【讨论】:

    • 我没有得到你的答案。该事件发生在 DOM 中。当该事件发生时,我需要使用 id="updatedList" 更新组件的内容
    【解决方案2】:

    像下面的代码一样更改你的 web.xml 文件

    web.xml

    <context-param>
    <param-name>javax.faces.PROJECT_STAGE</param-name>
    <param-value>Production</param-value></context-param>
    

    【讨论】:

    • 感谢您的尝试,但现在已经太晚了,我没有环境可以尝试了。
    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 2014-08-21
    • 2018-01-10
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2016-10-09
    相关资源
    最近更新 更多