- 浏览: 217466 次
- 性别:
- 来自: 武汉
文章分类
- 全部博客 (110)
- java (111)
- c# winform tablelayoutpanel学习 合并行的布局及动态增加删除内部控件 (1)
- javascript常用正则 (1)
- 认识Java程序 (1)
- UniqTask for android (1)
- JAX-RS 从傻逼到牛叉 2:开发一个简单的服务 (1)
- Spring MVC 数据绑定的扩展 (1)
- 手机分辨率 (1)
- tomcat的favicon.ico的用法 (1)
- Cookie读写demo (1)
- hive相关操作文档收集 (1)
- 测试开发工程师的发展 (1)
- JSF入门十(自定义转换器) (1)
- 《你能行:微软精英的职场心里话》 (1)
- JNI程序如何检测C代码的内存泄漏 (1)
- 做了几天的调研工作 (1)
- 使用Microsoft Web Application Stress进行压力测试 (1)
- 在线共享音乐吧(Online Share Music Bar)解决方案 (1)
- 如何二次压缩RM和RMVB格式文件 (1)
- 突然想起了红色联盟 就去看了看 (1)
- 推荐两个关于DB2认证的站点 (1)
- 安装Microsoft .NET Framework SDK 快速入门、教程和示例 (1)
- 去掉C/C++程序代码中的注释 (1)
- 数据结构之kmp模式匹配 (1)
- JS跨域 (1)
- SP2-0734: 未知的命令开头 "exp test/t..." - 忽略了剩余的行 解决办法 (1)
- Android开发之fedora13下编译Android源码 (1)
- Android开发之Linkify (1)
- json学习之三:JSONArray的应用 (1)
- js 数组操作代码集锦 (1)
- jquery跨域调用json数据 (1)
- qtdemo浅析 (1)
最新评论
-
songshuang:
最近怎么都盗我的文
做个小调查,程序员们都是什么星座的?
本文参考
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传回给客户端。<br>
直接以一个简单的例子来作说明,假设您有一个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}"/>
?
发表评论
-
qtdemo浅析
2012-02-07 16:14 1572[size=x-small;]? ? <span ... -
jquery跨域调用json数据
2012-02-03 11:39 1424? <script type="te ... -
js 数组操作代码集锦
2012-02-03 10:59 1138[size=small;]这段时间做的一个项目,用到数 ... -
json学习之三:JSONArray的应用
2012-02-02 15:29 71502从json数组中得到 ... -
Android开发之Linkify
2012-01-31 13:33 2202<h1>Android开发之Linkify ... -
Android开发之fedora13下编译Android源码
2012-01-11 16:04 1146<h1>Android开发之fedora1 ... -
SP2-0734: 未知的命令开头 "exp test/t..." - 忽略了剩余的行 解决办法
2011-12-28 14:13 3853<span style="font-f ... -
JS跨域
2011-12-21 16:43 2626原帖地址:http://itgeeker.com/ma ... -
数据结构之kmp模式匹配
2011-12-21 10:04 1178KMP字符串模式匹配详解 KMP字符串模式匹配通俗点说 ... -
去掉C/C++程序代码中的注释
2011-12-20 16:49 3044程序员面试宝典上面的题目有很多是很经典的问题,可供我 ... -
安装Microsoft .NET Framework SDK 快速入门、教程和示例
2011-12-19 10:09 2047Microsoft .NET Framework SD ... -
推荐两个关于DB2认证的站点
2011-12-19 09:59 845关于DB2认证的在线中文教程<br>htt ... -
突然想起了红色联盟 就去看了看
2011-12-17 10:54 1172突然想起了红色联盟,于是就偷偷的爬上红盟站点,看了看红 ... -
如何二次压缩RM和RMVB格式文件
2011-12-16 17:12 1111对RM/RMVB格式文件进行二次压缩,可以用一个软件E ... -
在线共享音乐吧(Online Share Music Bar)解决方案
2011-12-14 19:54 994</span></font>& ... -
使用Microsoft Web Application Stress进行压力测试
2011-12-14 18:33 872<font size="2" ... -
做了几天的调研工作
2011-12-14 17:29 1007</span></span> ... -
JNI程序如何检测C代码的内存泄漏
2011-12-13 14:59 1438Java调用C的JNI程序很容易出现内存泄漏问题,因为 ... -
《你能行:微软精英的职场心里话》
2011-12-12 14:39 955<p class="MsoNorm ... -
测试开发工程师的发展
2011-12-09 01:59 1478非常好的文章,转至:http://www.pyfans ...
相关推荐
### JSF入门知识点详解 #### 一、JSF概述 **1.1 简介JSF** JavaServer Faces (JSF) 是一种基于Java的标准技术,用于构建企业级Web应用。JSF的设计目的是简化Web应用程序的开发过程,通过封装HTTP协议的复杂性,...
- 自定义转换器:如果标准转换器无法满足需求,开发者可以编写自定义转换器,通过@FacesConverter注解注册。 - 标准验证器:JSF提供了一系列预定义的验证器,如@Size、@Pattern等,用于检查用户输入的有效性。...
- JSF还支持自定义组件,以满足特定需求。 3. **Facelets和视图** - Facelets是JSF的默认视图表示技术,用于创建可重用的、XML-based的UI模板。 - 视图是由UI组件组成的,这些组件通过EL(Expression Language)...
如果内置的转换器不能满足需求,开发者可以编写自定义转换器。自定义转换器需要实现`javax.faces.convert.Converter`接口,并通过`@FacesConverter`注解进行注册。 ### 结论 JSF 是一个强大的Web开发框架,它简化...
JSF内置了标准转换器和验证器,同时允许自定义转换器和验证器来满足特定需求。错误信息处理也是JSF的一部分,可以在数据转换或验证失败时提供反馈。 5. 事件处理 JSF支持多种类型的事件,包括动作事件(Action ...
除了内置转换器之外,JSF还支持自定义转换器。开发者可以创建自己的转换器类,实现特定的转换逻辑,并将其注册到JSF框架中。 ##### 3.3 标准验证器 JSF同样提供了一系列标准验证器,如RequiredValidator和...
### JSF入门知识点详解 #### 一、JSF概述与入门 **1.1 JSF简介** JavaServer Faces (简称JSF) 是一种基于Java的标准技术,用于构建企业级Web应用。JSF的设计目的是简化Web应用程序的开发过程,通过封装HTTP协议的...
- **自定义转换器**: 当内置转换器无法满足需求时,可以创建自定义转换器,通过实现`javax.faces.convert.Converter`接口来实现。 - **标准验证器**: JSF包含多种内置验证器,如`RequiredValidator`和`...
开发者也可以自定义转换器和验证器以满足特定需求。 3. **事件处理**: JSF使用事件驱动模型,允许开发者响应用户的交互。当用户操作如按钮点击发生时,JSF会触发相应的事件,开发者可以注册监听器来处理这些事件...
1. **JSF入门教程**:JSF的基础知识讲解,涵盖了JSF的基本概念、架构和工作原理。这个部分将教你如何配置JSF环境,创建第一个JSF应用,理解JSF生命周期,以及认识JSF的核心组件如输入字段、按钮、表单等。通过这个...
4. **实时事件与自定义转换器** "实时事件.htm"章节介绍了JSF如何处理用户的实时操作,如按钮点击等。"自订转换器.htm"则讲解了如何创建自定义的转换器,以便将用户输入的数据转换为应用程序可处理的格式。 5. **...
9. **JSF扩展和自定义**:JSF允许开发者自定义组件、渲染器、事件处理器和转换器,以满足特定项目需求。 10. **JSF与其他技术的集成**:JSF可以很好地与EJB、CDI、JPA等Java EE技术结合使用,构建复杂的Web应用程序...
### JSF入门教程知识点概述 #### 一、JSF简介 **1.1 简介JSF** JavaServer Faces (JSF) 是一种用于构建Java Web应用的标准框架,它旨在简化用户界面的开发,特别是在处理HTTP无状态特性和表单处理等方面。JSF的...