jsf转换器p:日历日期

jsf转换器p:日历日期,jsf,date,calendar,primefaces,converter,Jsf,Date,Calendar,Primefaces,Converter,“p:calendar”组件应该绑定到哪个Java类类型?(以便为其实现转换器) 我认为它是java.util.Date,因此我有以下内容: <p:calendar id="fecha" value="#{catalogoController.criterios.fecha}" maxlength="10" size="10" locale="es" pattern="dd/MM/yyyy"

“p:calendar”组件应该绑定到哪个Java类类型?(以便为其实现转换器)

我认为它是
java.util.Date
,因此我有以下内容:

<p:calendar id="fecha" value="#{catalogoController.criterios.fecha}"
            maxlength="10"
            size="10"
            locale="es"
            pattern="dd/MM/yyyy"
            navigator="true"
            showOn="button"
            showButtonPanel="true" />
我没有把方法的代码放在这里,因为它很大。它检查条件并抛出ConverterException和自定义facesmessages,这是我从自定义属性文件(“MSJSConvertion”)获得的

但它不起作用。当我输入错误的日期(例如“01/032011”)时,我的
getaObject
方法不会被触发(我知道,因为它的第一个日志行从未到达)。转换的默认消息显示为facesmessage,而不是我从bundle“msjsConversion”中获得的消息

我认为它之所以没有被触发,是因为
p:calendar
绑定到的Java类不是
Java.util.Date
(我为其声明了转换器的类)

因此,我检查了如果我用ID声明转换器:

@FacesConverter("fechaDateConverter")
public class FechaDateConverter implements Converter {
我把它放在
p:calendar
组件中:

<f:converter converterId="fechaDateConverter" />

它起作用了

所以有人知道哪个是
p:calendar
的Java类吗?这样我就可以为那个类声明我的转换器,而不用converterId了

先谢谢你

有人知道p:calendar的Java类是什么吗

看来没有

请注意,这个答案适用于primefaces 1.1,我没有检查更高版本可能会有所不同

从字符串到日期的转换在org.primefaces.component.calendar.CalendarRenderer的getConvertedValue方法中完成


如果指定了转换器(在页面上使用的p:calendar中),它将用于转换日期并处理可能遇到的任何错误。如果未指定转换器,则该方法尝试使用提供的模式解析日期(或者如果未提供模式,则返回使用默认的MM/dd/yyyy)。

您可以使用p:calendar的属性converter来指定转换器,无论是通过id(例如converter='fechadatector')还是通过bean名称(例如,converter='#{fechaDateConverter}')


这样做的缺点是,如果每个p:calendar…

都需要重复,为什么需要p:calendar值的转换器?这是一个简单的日期我的转换器用于简单的日期(请参见我的问题)。但是如果我为任何日期对象'@FacesConverter(forClass=java.util.date.class)声明它,它就不起作用了’。如果我为带有“”的组件显式声明它,它就会起作用
<f:converter converterId="fechaDateConverter" />