binding =“#{cc.table}”:目标无法访问,标识符'cc'已解析为null

时间:2015-11-14 13:06:07

标签: jsf jsf-2.2 composite-component

我正在尝试重现以下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>

...

可能与同一问题相关联,但也未检测到“Field”类的outputLabel中的标签和值。可能是什么原因?

2 个答案:

答案 0 :(得分:0)

我不希望在复合组件实现中的此位置使用内容辅助。

通过创建以下文件夹:WebContent&gt;资源&gt;我放置复合材料组件的mycomponents解决了我的问题。

答案 1 :(得分:0)

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

  

/WEB-INF/tags/dynamicFieldList.xhtml

复合材料组件并不属于那里。您似乎已将复合组件视为标记文件。这个不对。它与标记文件有很大不同。复合组件应放在表示库名称的子文件夹中的JSF /resources文件夹中。以下示例使用components作为库名。

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

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

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

另见: