属性列表未在o:converter(Netbeans 7.3)中定义

时间:2013-07-15 13:46:12

标签: configuration netbeans-7 omnifaces

我正在尝试在主要选项列表中使用新的org.omnifaces.converter.ListConverter。 我在maven的项目中添加了新的依赖项,并重建了项目以下载jar文件:

<dependency>
    <groupId>org.omnifaces</groupId>
    <artifactId>omnifaces</artifactId>
    <version>1.5</version>
</dependency>

我正在我的facelets中导入命名空间,如下所示:

xmlns:o="http://omnifaces.org/ui"

但是,当我尝试在我的选项列表中使用<o:converter>时,如下所示:

<o:converter converterId="omnifaces.ListConverter" list="#{projectBean.clientSource}" />

我从netbeans 7.3收到一条消息说:

The attribute list is not defined in the component converter

它似乎没有导致任何构建失败但... 我错过了什么吗?我不习惯使用omnifaces吗?

3 个答案:

答案 0 :(得分:4)

不幸的是,这是“按设计”。

Netbeans显然根据他们在*.taglib.xml文件中的注册来严格验证属性。

<o:converter>应该支持任意转换器的所有属性,例如<f:convertDateTime>patternlocale,{{ 1 {}和minFractionDigits <f:convertNumber>等等。但是,在integerOnly文件中注册所有这些属性是不可能的,以便满足*.taglib.xml的所有可能用例。它也支持自定义转换器而不是标准转换器。

然而,指定“自定义”标记属性是有效的,这是<o:converter>所依赖的地方。 <o:converter>属性实际上是list转换器的属性。我手头没有Netbeans,我不确定它是将其解释为错误还是警告,或者它是否可以在其验证设置中的某处进行配置,但我可以向您保证这绝对是无害的,最多应该是生成警告(因而不是错误)。

如果您不理解omnifaces.ListConverter的使用,它是一个特殊的标记处理程序,它在视图渲染时间而不是视图构建时间内评估指定转换器的属性。这样就可以提供与bean属性绑定的“动态”属性,而不是硬编码的字符串属性。

答案 1 :(得分:1)

我通过解压缩omnifaces-2.1.jar在netbeans中解决了这个问题。

编辑omnifaces-2.1 \ META-INF \ omnifaces-ui-taglib.xml

查找转换器

在转换器下添加属性:

<attribute>
        <description>
            <![CDATA[
                Model source list http://showcase.omnifaces.org/converters/ListConverter
            ]]>
        </description>
        <name>list</name>
        <required>false</required>
        <type>java.lang.String</type>
</attribute>

就在之前&lt; / tag&gt;。

将提取的内容(META-INF和org文件夹)压缩到onmifaces-2.1.jar。

在netbeans中使用该jar。

答案 2 :(得分:-1)

第一次添加依赖项时,netbeans不会更新其名称空间列表。

然后,

  1. 执行“清理并构建”
  2. 在某些情况下,请重新启动Netbeans
  3. 全部

    同样的情况发生在omnifaces 1.7和Netbeans 7.3.1