【问题标题】:binding="#{cc.table}": Target Unreachable, identifier 'cc' resolved to nullbinding="#{cc.table}": 目标不可达,标识符 'cc' 解析为 null
【发布时间】:2016-02-15 23:27:09
【问题描述】:

我正在尝试重现以下example,但在dynamicFieldList.xhtml 中未检测到#{cc.table},并且出现以下错误:

/WEB-INF/tags/dynamicFieldList.xhtml @17,93 binding="#{cc.table}": Target Unreachable, identifier 'cc' resolved to null

下面是这行代码

<ui:composition
...
    xmlns:cc="http://java.sun.com/jsf/composite">
...

<cc:implementation>

    <h:dataTable id="table" binding="#{cc.table}" value="#{cc.attrs.value}" var="field">

        <h:column><h:outputLabel value="#{field.label}" /></h:column>

        // ...
</cc:implementation>

...

可能与同一问题有关,但也未检测到“字段”类的 outputLabel 中的标签和值字符串。这可能是什么原因?

【问题讨论】:

  • 复合组件不是标记文件。将 [composite-component] 标签悬停在问题下方,直到出现弹出框,然后单击其中的 info 链接。
  • @BalusC:感谢您的指导

标签: jsf jsf-2.2 composite-component


【解决方案1】:

错误消息中的路径看起来不正确。

/WEB-INF/tags/dynamicFieldList.xhtml

复合组件不属于那里。您似乎已将复合组件视为标记文件。这个不对。它与标记文件非常不同。复合组件应该放置在代表库名称的子文件夹中的 JSF /resources 文件夹中。下面的例子使用components 作为库名。

WebContent
 |-- META-INF
 |-- WEB-INF
 |-- resources
 |    `-- components
 |         `-- dynamicFieldList.xhtml   <--- Here.
 `-- some.xhtml

您也不需要像在标记文件中那样在*.taglib.xml 文件中声明它们。您可以通过隐式 http://java.sun.com/composite/[libraryName] XML 命名空间声明它们。

<html ... xmlns:my="http://java.sun.com/composite/components">
...
<my:dynamicFieldList ... />

另见:

【讨论】:

  • 感谢您的宝贵时间。由于我的 ajax 更改的 clientID 问题仍未解决,我将为此发布另一个问题。我使用 手动创建了嵌套表和子表,但我仍然无法通过...更新下一个列...
【解决方案2】:

我对在复合组件实现中的这个位置的 Content Assist 的期望是不可能的。

通过创建以下文件夹:WebContent > resources > mycomponents 我放置复合组件的位置解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-09
    • 2020-09-28
    • 2014-08-24
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    相关资源
    最近更新 更多