5

我正在尝试org.omnifaces.converter.ListConverter在 primefaces 选项列表中使用新的。我使用 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

它似乎并没有导致任何构建失败......我错过了什么吗?我不是按原样使用全脸吗?

4

3 回答 3

4

不幸的是,这是“设计使然”。

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

<o:converter>应该支持任何任意转换器的所有属性,例如patternand localeof <f:convertDateTime>、 the minFractionDigitsand integerOnlyof<f:convertNumber>等。然而,不可能在文件中注册所有这些属性*.taglib.xml以满足<o:converter>. 它也支持自定义转换器而不是标准转换器。

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

如果您不了解 的用法<o:converter>,它是一个特殊的标记处理程序,它在视图渲染时间而不是视图构建时间评估指定转换器的属性。通过这种方式,可以提供与 bean 属性相关的“动态”属性,而不是硬编码的字符串属性。

于 2014-01-17T07:31:29.277 回答
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>

就在 < /tag > 之前。

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

在netbeans中使用那个jar。

于 2015-06-11T15:04:06.200 回答
-1

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

然后,

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

而这一切

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

于 2014-01-16T01:16:54.413 回答