JSF教程 – JSF自定义转换器示例
我们可以在JSF中创建我们自己的自定义转换器。
以下列表是我们可以按照在JSF中创建自定义转换器的步骤。
- 通过实现javax.faces.convert.Converter接口创建转换器类。
- 实现上述接口的getAsObject()和getAsString()方法。
- 使用注释@FacesConvertor为自定义转换器分配唯一的ID。
例子
以下代码来自URLConverter.java。
package cn.w3cschool.common; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.ConverterException; import javax.faces.convert.FacesConverter; @FacesConverter("cn.w3cschool.common.URLConverter") public class URLConverter implements Converter{ @Override public Object getAsObject(FacesContext context, UIComponent component, String value) { String HTTP = "http://"; StringBuilder url = new StringBuilder(); if(!value.startsWith(HTTP, 0)){ url.append(HTTP); } url.append(value); if(url.toString().length() > 10){ FacesMessage msg = new FacesMessage("URL Conversion error.", "Invalid URL format."); msg.setSeverity(FacesMessage.SEVERITY_ERROR); throw new ConverterException(msg); } return url.toString(); } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { return value.toString(); } }
下面的代码来自UserBean.java。
package cn.w3cschool.common; import java.io.Serializable; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean(name="user") @SessionScoped public class UserBean implements Serializable{ String bookmarkURL; public String getBookmarkURL() { return bookmarkURL; } public void setBookmarkURL(String bookmarkURL) { this.bookmarkURL = bookmarkURL; } }
以下代码来自result.xhtml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jsp/jstl/core" > <h:body> <h:panelGrid columns="2"> Bookmark URL : <h:outputText value="#{user.bookmarkURL}" /> </h:panelGrid> </h:body> </html>
以下代码来自demo.xhtml。
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core" > <h:body> <h:form> <h:panelGrid columns="3"> Enter your bookmark URL : <h:inputText id="bookmarkURL" value="#{user.bookmarkURL}" size="20" required="true" label="Bookmark URL"> <f:converter converterId="cn.w3cschool.common.URLConverter" /> </h:inputText> <h:message for="bookmarkURL" style="color:red" /> </h:panelGrid> <h:commandButton value="Submit" action="result" /> </h:form> </h:body> </html>
下载 Custom-Converter.zip
运行
将生成的WAR文件从目标文件夹复制到Tomcat部署文件夹,并运行Tomcat-Install-folder/bin/startup.bat。
Tomcat完成启动后,在浏览器地址栏中键入以下URL。
http://localhost:8080/simple-webapp/demo.xhtml