我正在尝试在主要选项列表中使用新的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吗?
答案 0 :(得分:4)
不幸的是,这是“按设计”。
Netbeans显然根据他们在*.taglib.xml
文件中的注册来严格验证属性。
<o:converter>
应该支持任意转换器的所有属性,例如<f:convertDateTime>
的pattern
和locale
,{{ 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不会更新其名称空间列表。
然后,
全部
同样的情况发生在omnifaces 1.7和Netbeans 7.3.1
上