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

4

我希望使用标准的JSF转换器(javax.faces.convert.DateTimeConverter)来处理视图参数。

根据文档:

您可以通过类或其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>

并使用了ID

<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中)?

转换器ID为javax.faces.DateTime,因此请尝试使用converter="javax.faces.DateTime" - Adam
@Adam 谢谢,它有效!请将其发布为答案,以便我可以接受它。 - Matteo
2个回答

4
转换器的 ID 是 javax.faces.DateTime,因此请尝试。
<f:viewParam
  converter="javax.faces.DateTime"
... />

0

只需使用 f:convertDateTime 与 ISO 模式

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接