除了使用标准的转换器之外,您还可以自行定制您的转换器,您可以实作 javax.faces.convert.Converter 介面,这个介面有两个要实作的方法:
public Object getAsObject(FacesContext context,
UIComponent component,
String str);
public String getAsString(FacesContext context,
UIComponent component,
Object obj);
简单的说,第一个方法会接收从客户端经由 HTTP 传来的字串资料,您在第一个方法中将之转换为您的自订物件,这个自订物件将会自动设定给您指定的 Bean 物件;第二个方法就是将从您的 Bean 物件得到的物件转换为字串,如此才能藉由 HTTP 传回给客户端。
1. User.java 目标转换类。
2. GuestBean 这个 Bean 上的属性直接传回或接受 User 型态的参数,我们来实作一个简单的转换器,为 HTTP 字串与 User 物
件进行转换。
3. 实作完成这个转换器,我们要告诉 JSF 这件事,这是在 faces-config.xml 中完成注册。
<converter>
<converter-id>onlyfun.caterpillar.User</converter-id>
<converter-class>
onlyfun.caterpillar.UserConverter
</converter-class>
</converter>
4.UserConverter.java 转换器
public Object getAsObject(FacesContext context, UIComponent component, String str) {
//Page -> Server
}
public String getAsString(FacesContext context, UIComponent component, Object obj)
throws ConverterException {
//Server -> Page
}
5. 注册转换器时(在页面),需提供转换器识别( Converter ID )与转换器类别,接下来要在 JSF 页面中使用转换器的话,就是指定所要使用的转换器识别。