JSF入门十(自定义转换器)
来源:互联网 发布:qq飞车雷诺官方数据 编辑:程序博客网 时间:2024/05/16 11:40
本文参考
http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630
除了使用标准的转换器之外,您还可以自行定制您的转换器,您可以实现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传回给客户端。
直接以一个简单的例子来作说明,假设您有一个User类:
package bruce.zhao.model;public class User {private String firstName;private String lastName;public String getFirstName() {return firstName;}public void setFirstName(String firstName) {this.firstName = firstName;}public String getLastName() {return lastName;}public void setLastName(String lastName) {this.lastName = lastName;}}
这个User类是我们转换器的目标对象,而您有一个GuestBean类:
package bruce.zhao.model;public class GuestBean {private User user;public void setUser(User user) {this.user = user;}public User getUser() {return user;}}
这个Bean上的属性直接传回或接受User类型的参数,我们来实现一个简单的转换器,为HTTP字符串与User对象进行转换:
package bruce.zhao.model;import javax.faces.component.UIComponent;import javax.faces.context.FacesContext;import javax.faces.convert.Converter;import javax.faces.convert.ConverterException;public class UserConverter implements Converter {public Object getAsObject(FacesContext context, UIComponent component,String str) throws ConverterException {String[] strs = str.split(",");User user = new User();try {user.setFirstName(strs[0]);user.setLastName(strs[1]);} catch (Exception e) {// 转换错误,简单的丢出例外throw new ConverterException();}return user;}public String getAsString(FacesContext context, UIComponent component,Object obj) throws ConverterException {String firstName = ((User) obj).getFirstName();String lastName = ((User) obj).getLastName();return firstName + "," + lastName;}}
实现完成这个转换器,我们要告诉JSF这件事,这是在faces-config.xml中完成注册:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE faces-config PUBLIC"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN""http://java.sun.com/dtd/web-facesconfig_1_0.dtd"><faces-config><navigation-rule><from-view-id>/*</from-view-id><navigation-case><from-outcome>show</from-outcome><to-view-id>/pages/index.jsp</to-view-id></navigation-case></navigation-rule><converter><converter-id>bruce.zhao.model.User</converter-id><converter-class>bruce.zhao.model.UserConverter</converter-class></converter><managed-bean><managed-bean-name>guest</managed-bean-name><managed-bean-class>bruce.zhao.model.GuestBean</managed-bean-class><managed-bean-scope>session</managed-bean-scope></managed-bean></faces-config>
注册转换器时,需提供转换器标识(Converter ID)与转换器类,接下来要在JSF页面中使用转换器的话,就是指定所要使用的转换器标识,例如:
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%><%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%><%@page contentType="text/html;charset=GB2312"%><f:view><html><head><title>自定义转换器</title></head><body>Guest名称是:<b> <h:outputText value="#{guest.user}"converter="bruce.zhao.model.User" /> </b><h:form><h:inputText id="userField" value="#{guest.user}"converter="bruce.zhao.model.User" /><h:message for="userField" style="color:red" /><br><h:commandButton value="送出" action="show" /></h:form></body></html></f:view>
您也可以<f:converter>标签并使用converterId属性来指定转换器,例如:
<h:inputText id="userField" value="#{guest.user}"><f:converter converterId="bruce.zhao.model.User"/></h:inputText>
除了向JSF注册转换器之外,还有一个方式可以不用注册,就是直接在Bean上提供一个取得转换器的方法,例如:
public class GuestBean {private User user;private Converter converter = new UserConverter();public void setUser(User user) {this.user = user;}public User getUser() {return user;}public Converter getConverter() {return converter;}}
之后可以直接结合 JSF Expression Language 来指定转换器:
<h:inputText id="userField" value="#{guest.user}" converter="#{guest.converter}"/>
- JSF入门十(自定义转换器)
- JSF入门十(自定义转换器)
- JSF转换器之自定义转换器
- JSF自定义转换器
- JSF自定义转换器
- 自定义JSF转换器示例
- JSF入门九(标准转换器)
- 十、自定义类型转换器
- JSF--转换器的使用和自定义
- JSF---->标准转换器(Converter)
- JSF入门十二(自定义验证器)
- JSF入门十四(自定义转换, 验证标签)
- JSF Gossip: 标准转换器
- JSF Gossip: 自订转换器
- jsf 转换器演示
- Jsf日期转换器
- JSF---->自订转换器
- JSF转换器的使用
- JSF入门六(JSF Expression Language)
- JSF入门七(国际化信息)
- JAVA实现自动打开URL对应的网页并保存为图片-不借助第三方API
- JSF入门八(Managed Beans)
- JSF入门九(标准转换器)
- JSF入门十(自定义转换器)
- JSF入门十一(标准验证器)
- 巴巴运动网商品交易系统的架构
- 巴巴运动网商品交易系统对分页的封装
- JSF入门十二(自定义验证器)
- JSF入门十三(错误信息处理)
- JSF入门十四(自定义转换, 验证标签)
- JSF入门十五(动作事件)
- JSF入门十六(即时事件)