Jur*_*ert 5 jsf properties converter
我试图在faces-config中注册不同的转换器实例,使用传递不同参数的标准转换器类.
下面的代码注册了两个DateTimeConverters,第一个用于日期,包括时间,第二个用于时间.但是模式属性永远不会被设置.可以这样做吗?
<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>
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这是不可能的faces-config.xml.<property>您正在尝试的声明在运行时期间不会使用.
如果你想要的只是在一个地方控制模式,那么你最好的办法是创建一个自定义转换器.出于这个特殊目的,它并不难.只需DateTimeConverter在施工期间扩展并设置图案.这是一个基本的例子:
public MyDateTimeConverter extends DateTimeConverter() {
public MyDateTimeConverter() {
setPattern("yyyy-MM-dd HH:mm:ss");
}
}
Run Code Online (Sandbox Code Playgroud)
您当然可以从其他地方获取模式,例如类路径中的属性文件或xml文件.
注册此转换器如下:
<converter>
<converter-for-class>java.util.Date</converter-for-class>
<converter-class>com.example.MyDateTimeConverter</converter-class>
</converter>
Run Code Online (Sandbox Code Playgroud)
那应该是它.不需要f:converter或UIOutput#setConverterId().
| 归档时间: |
|
| 查看次数: |
6956 次 |
| 最近记录: |