【问题标题】:Another "cannot find component" with JSF 2.0 and PrimefacesJSF 2.0 和 Primefaces 的另一个“找不到组件”
【发布时间】:2012-06-21 00:31:53
【问题描述】:

刚看到很多关于“update”、“@all”、“@form”的问题,但没有人解决我的应用程序中的一个情况。

我有一个名为 threadList 的自定义 JSF 标记:

<h:form>
    <h:panelGroup>
        <p:commandButton action="#{Bean.action(catId, id)}" icon="ui-icon-weblibrary ui-icon-weblibrary-like" title="Start" update="@form" value="#{Bean.threadName}" />
    </h:panelGroup>
</h:form>

这个自定义标签被另一个自定义标签插入,如下所示:

<ui:repeat value="#{Bean.threadList}" var="thread">
   <ui:include src="threadList.xhtml">
      <ui:param name="catId" value="..." />
      <ui:param name="id" value="..." />
   </ui:include>
</ui:repeat>

有时这可能是第二个 taglib 和通过 ajax 更新的结果。

事情是这样的……

  • 当我在 p:commandButton 中设置 update="@form" 时,一切正常,但在我的日志中,我看到“在视图中找不到标识符为“j_idt70:0:j_idt82”的组件。”;
  • 当我设置 update=":@form" 或 update=":form" 时,“在视图中找不到标识符为 "j_idt70:0:j_idt82" 的组件。”消失,但事件不会更新任何内容(即使操作成功运行);
  • 最后,当我给 form 和 panelGroup 一个 id 并尝试 update=":formId:panelId" 或 update=":@formId:panelId" 或 update=":formId" 消息“找不到标识符为”j_idt70 的组件:0:j_idt82" 在视图中。"出现并且没有任何更新。

奇怪的是浏览器的源代码中没有。所以,我不知道这个“幽灵”j_idt70 是否破坏了所有的 id 和更新命令。

我尝试了我在堆栈溢出的旧问题中学到的所有东西,然后再次询问您。

非常感谢您的阅读和关注。

【问题讨论】:

  • JSF impl/version 和 PF 版本是什么?
  • 那个“ghost” id 是一个组件自动生成的 id。尝试为所有组件添加 ID,以便在打印错误消息时它会告诉您要查找的组件 ID。此外,如果您的自定义组件有一个表单,请记住 将在您的 xhtml 页面中打印 N 个表单,并且 commandButton 范围将只是该表单(至少在您的实际设计中)。如果您使用的是 JSF 2,也许 this link 可以帮助您。
  • @BalusC,我正在使用 JSF 2.0 和 Primefaces 3.0.1。
  • @LuiggiMendoza,我阅读了链接,但恐怕我们无法将其从托管 bean 更改为复合组件。不是现在,也许是将来。
  • "JSF 2.0" 是规范版本,不是实现名称或版本。

标签: java jsf primefaces


【解决方案1】:

到目前为止给出的代码对我来说在 Mojarra 2.1.9 和 PrimeFaces 3.3 上运行良好。

如果您也升级到最新版本,那么您的问题很可能会得到解决。

【讨论】:

  • 我明白了。我使用的是 Mojarra 2.1.1,但这是因为 Netbeans 对其进行了配置。我可以下载一个新的 jsf-impl.jar 并替换它的 jar,但我想知道是否有办法通过 Netbeans IDE 升级它。
  • 那是一个相当旧的版本,已经1岁多了。抱歉,我不使用 Netbeans,所以我不知道该怎么做。
  • 没问题@BalusC 你帮了我很多。我会尝试更新 Mojarra 和 Primefaces,然后我会回来告诉它是否有效。非常感谢。
  • 刚刚更新了 Mojarra 和 PrimeFaces,一切正常!非常感谢大家。
猜你喜欢
  • 2015-07-15
  • 1970-01-01
  • 2011-07-24
  • 1970-01-01
  • 2011-11-11
  • 1970-01-01
  • 2012-04-19
  • 2013-12-16
  • 1970-01-01
相关资源
最近更新 更多