java JSF 2.0:< f:viewParam>和默认转换器

qvtsj1bj  于 2023-05-15  发布在  Java
关注(0)|答案(2)|浏览(81)

我想对视图参数使用标准JSF转换器(javax.faces.convert.DateTimeConverter
来自文档:
您可以使用组件标记的converter属性按类或其ID引用转换器。该ID在应用程序配置资源文件中定义
然后我试着:

<f:viewParam
    name        = "rangeStartCreationDate"
    value       = "#{doiListController.model.rangeStartCreationDate}"
    converter   = "javax.faces.convert.DateTimeConverter"
/>

但我得到了

javax.faces.FacesException: Expression Error: Named Object: javax.faces.convert.DateTimeConverter not found.

然后我尝试了第二个选项(通过ID)。我在faces-config.xml中定义了转换器

<converter> 
    <converter-id>DateTimeConverter</converter-id> 
    <converter-class>javax.faces.convert.DateTimeConverter</converter-class> 
</converter>

并使用了身份证

<f:viewParam
    name        = "rangeStartCreationDate"
    value       = "#{doiListController.model.rangeStartCreationDate}"
    converterId = "DateTimeConverter"
/>

在这种情况下我得到

Conversion Error setting value 'Tue Jul 24 00:00:00 CEST 2012' for 'null Converter'.

有没有一种方法可以让JSF示例化转换器,或者我必须手动示例化它(在一些bean中)?

v1uwarro

v1uwarro1#

转换器ID为javax.faces.DateTime,因此尝试

<f:viewParam
  converter="javax.faces.DateTime"
... />
cnjp1d6j

cnjp1d6j2#

只需使用f:convertDateTime和ISO模式

<f:viewParam name="rangeStartCreationDate" value="#{doiListController.model.rangeStartCreationDate}" >
    <f:convertDateTime type="localDate" pattern="yyyy-MM-dd"/>
</f:viewParam>

相关问题