JSF转换器属性

JSF转换器属性,jsf,properties,converter,Jsf,Properties,Converter,我试图在faces配置中注册不同的转换器实例,使用一个标准的转换器类,将不同的参数传递给它 下面的代码注册了两个DateTimeConverter,第一个用于包含时间的日期,第二个仅用于时间。但是pattern属性从未设置过。这能做到吗 <converter> <converter-id>dateTimeConverter</converter-id> <converter-class>javax.faces.convert.Dat

我试图在faces配置中注册不同的转换器实例,使用一个标准的转换器类,将不同的参数传递给它

下面的代码注册了两个DateTimeConverter,第一个用于包含时间的日期,第二个仅用于时间。但是pattern属性从未设置过。这能做到吗

<converter>
    <converter-id>dateTimeConverter</converter-id>
    <converter-class>javax.faces.convert.DateTimeConverter</converter-class>
    <property>
        <property-name>pattern</property-name>
        <suggested-value>yyyy-MM-dd HH:mm:ss</suggested-value>
    </property>
</converter>

<converter>
    <converter-id>timeConverter</converter-id>
    <converter-class>javax.faces.convert.DateTimeConverter</converter-class>
    <property>
        <property-name>pattern</property-name>
        <suggested-value>HH:mm:ss</suggested-value>
    </property>
</converter>

日期时间转换器
javax.faces.convert.DateTimeConverter
图案
yyyy MM dd HH:MM:ss
时间转换器
javax.faces.convert.DateTimeConverter
图案
HH:mm:ss

不幸的是,通过
faces config.xml
这是不可能的。运行时未使用您正在尝试的
声明

如果您只想在一个位置控制模式,那么您所能做的最好的事情就是创建一个自定义转换器。为了这个特殊的目的,这并不难。只需扩展
DateTimeConverter
,并在构建过程中设置模式。以下是一个基本示例:

public MyDateTimeConverter extends DateTimeConverter() {
    public MyDateTimeConverter() {
        setPattern("yyyy-MM-dd HH:mm:ss");
    }
}
当然,您可以从其他地方获取模式,例如,类路径中的属性文件或xml文件

按如下方式注册此转换器:

<converter>
    <converter-for-class>java.util.Date</converter-for-class>
    <converter-class>com.example.MyDateTimeConverter</converter-class>
</converter>

日期类型
com.example.MyDateTimeConverter

应该是这样。不需要
f:converter
UIOutput#setConverterId()

确实不需要。编辑您的问题,取消选中“社区维基”复选框并保存。社区维基仅用于主观问题/讨论。你的问题远非主观的。这只是一个技术问题。是的,我不知道那是什么。但是编辑页面中没有复选框可以禁用它:(选中后,社区wiki无法取消选中。感谢您的解释。但是faces-config.xml中的这些属性有什么用途?(属性标记是xsd的一部分)。@JurgenHannaert,请看,它说:“属性”和“属性”元素旨在允许组件开发人员向工具和用户更完整地描述其组件。这些元素没有必需的运行时语义。事实上,例如[ctrl+space]自动完成工具提示/描述。