- 浏览: 122985 次
- 性别:
- 来自: 重庆
文章分类
最新评论
-
sunxiangfei91:
引用[*][url][/url]
Spring使用MimeMessageHelper -
lhb3015:
lz, Coder 这个类的代码呢??
Java RSA算法加密 -
b_lee:
顶顶顶 加两个字,再顶
Facelets是JSF更好的外衣 -
zhuqing08:
楼主 Coder 这个类的代码呢?
Java RSA算法加密 -
evajhhot:
貌似不行 有异常
BlazeDS 与Spring集成指南之一
除了使用标准的转换器之外,您还可以自行定制您的转换器,您可以实作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类别:
User.java
User.java
package onlyfun.caterpillar;
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类别:
GuestBean.java
GuestBean.java
package onlyfun.caterpillar;
public class GuestBean {
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
这个Bean上的属性直接传回或接受User型态的参数,我们来实作一个简单的转换器,为HTTP字符串与User对象进行转换:
UserConverter.java
UserConverter.java
package onlyfun.caterpillar;
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中完成注册:
faces-config.xml
faces-config.xml
<?xml version="1.0"?>
<!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>onlyfun.caterpillar.User</converter-id>
<converter-class>
onlyfun.caterpillar.UserConverter
</converter-class>
</converter>
<managed-bean>
<managed-bean-name>guest</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.GuestBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
注册转换器时,需提供转换器识别(Converter ID)与转换器类别,接下来要在JSF页面中使用转换器的话,就是指定所要使用的转换器识别,例如:
index.jsp
index.jsp
<%@ 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=Big5"%>
<f:view>
<html>
<head>
<title>自订转换器</title>
</head>
<body>
Guest名称是:<b>
<h:outputText value="#{guest.user}"
converter="onlyfun.caterpillar.User"/>
</b>
<h:form>
<h:inputText id="userField"
value="#{guest.user}"
converter="onlyfun.caterpillar.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="onlyfun.caterpillar.User"/>
</h:inputText>
除了向JSF注册转换器之外,还有一个方式可以不用注册,就是直接在Bean上提供一个取得转换器的方法,例如:
GuestBean.java
GuestBean.java
package onlyfun.caterpillar;
import javax.faces.convert.Converter;
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}"/>
public Object getAsObject(FacesContext context,
UIComponent component,
String str);
public String getAsString(FacesContext context,
UIComponent component,
Object obj);
简单的说,第一个方法会接收从客户端经由HTTP传来的字符串数据,您在第一个方法中将之转换为您的自订对象,这个自订对象将会自动设定给您指定的Bean对象;第二个方法就是将从您的Bean对象得到的对象转换为字符串,如此才能藉由HTTP传回给客户端。
直接以一个简单的例子来作说明,假设您有一个User类别:
User.java
User.java
package onlyfun.caterpillar;
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类别:
GuestBean.java
GuestBean.java
package onlyfun.caterpillar;
public class GuestBean {
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
}
这个Bean上的属性直接传回或接受User型态的参数,我们来实作一个简单的转换器,为HTTP字符串与User对象进行转换:
UserConverter.java
UserConverter.java
package onlyfun.caterpillar;
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中完成注册:
faces-config.xml
faces-config.xml
<?xml version="1.0"?>
<!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>onlyfun.caterpillar.User</converter-id>
<converter-class>
onlyfun.caterpillar.UserConverter
</converter-class>
</converter>
<managed-bean>
<managed-bean-name>guest</managed-bean-name>
<managed-bean-class>
onlyfun.caterpillar.GuestBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
注册转换器时,需提供转换器识别(Converter ID)与转换器类别,接下来要在JSF页面中使用转换器的话,就是指定所要使用的转换器识别,例如:
index.jsp
index.jsp
<%@ 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=Big5"%>
<f:view>
<html>
<head>
<title>自订转换器</title>
</head>
<body>
Guest名称是:<b>
<h:outputText value="#{guest.user}"
converter="onlyfun.caterpillar.User"/>
</b>
<h:form>
<h:inputText id="userField"
value="#{guest.user}"
converter="onlyfun.caterpillar.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="onlyfun.caterpillar.User"/>
</h:inputText>
除了向JSF注册转换器之外,还有一个方式可以不用注册,就是直接在Bean上提供一个取得转换器的方法,例如:
GuestBean.java
GuestBean.java
package onlyfun.caterpillar;
import javax.faces.convert.Converter;
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}"/>
发表评论
-
Seam管理的事务
2010-01-28 15:22 1197EJB会话Bean有声明式事务 ... -
配置Seam组件之二
2010-01-16 20:30 947如果你有大量的组件需要在XML中进行配置,那么就很有必要将 c ... -
配置Seam组件之一
2010-01-16 20:29 981Seam所崇尚的哲学是XML配 ... -
Seam上下文
2009-12-25 15:23 1022Seam上下文是由框架创建 ... -
JSF和Spring的集成之二
2009-12-23 17:55 948使用框架 1 介绍 这个 ... -
JSF和Spring的集成之一
2009-12-19 20:45 772JSF和Spring集成的资料比较少,原理是获得彼此的上下文引 ... -
Seam配置和Seam应用程序打包之二
2009-11-28 09:15 1296将Seam与你的EJB容器集成 我们需要将 SeamInter ... -
Seam配置和Seam应用程序打包之一
2009-11-20 22:25 1144Seam基本配置 首先,让我们看看每当将Seam和JSF一起使 ... -
用Java Server Faces建立交互式WEB站点
2009-11-07 10:12 643步骤1:开发组件的Java ... -
集成JSF与BEEHIVE PAGE FLOW之二
2009-10-10 21:54 1035从后台bean访问当前页面 ... -
集成JSF与BEEHIVE PAGE FLOW之一
2009-10-07 23:13 997JSF对通过关联组件和事件来构建页面而说是非常棒的,但是,与所 ... -
借助Ajax自动保存JSF表单之二
2009-09-19 12:53 1216创建和发送 Ajax 请求 submitFormData() ... -
借助 Ajax 自动保存 JSF 表单之一
2009-09-13 11:00 1103在客户端获取表单数据 本节将给出一个 JSF 表单,其数据通 ... -
基于AJAX和JSF打造丰富的互联网组件之Weblets篇
2009-09-04 15:08 942为了在JSF开发中联合使用AJAX和Mozilla XUL技术 ... -
JSF 2.0的一个AJAX例子
2009-08-21 10:49 2420首先创建一个ManagedBean用来记录我们提交按钮的数量。 ... -
JSF2.0的页面模版化
2009-08-15 10:28 1733本篇介绍可以与Tapestry相媲美的页面模版化定义。 我 ... -
JSF2.0中自定义组件模型例子
2009-08-11 07:59 1333在本篇介绍中,我们开始接触JSF2.0纳为标准的最重要的特性之 ... -
Java Server Faces 2.0重要新功能以及相关改进简介
2009-08-01 10:00 1089JSF 2.0的最终规范也已经发布了有近一个月了,在近期试 ... -
JSF2: Ajax事件和错误
2009-07-09 09:13 1093JSF2的Ajax支持包含一个 ... -
Facelets是JSF更好的外衣
2009-06-16 15:53 1581是由 Sun 公司在 dev.java.net 上的一个开源项 ...
相关推荐
o 自订转换器 o 标准验证器 o 自订验证器 o 错误讯息处理 o 自订转换, 验证标签 事件处理 JSF的事件模型提供一个近似的桌面GUI事件模式,让熟悉GUI设计的人员也能快速上手Web程序设计。 o 动作事件 o 实时事件 o 值...
* 自订转换器:JSF框架提供了一个自订转换器机制,允许开发者在JSF页面中使用自订转换器。 * 标准验证器:JSF框架提供了一个标准验证器机制,允许开发者在JSF页面中使用标准验证器。 JSF入门级教程提供了一个详细的...
"自订转换器.htm"则讲解了如何创建自定义的转换器,以便将用户输入的数据转换为应用程序可处理的格式。 5. **自定义Renderer** "自订 Renderer.htm"涵盖了如何扩展JSF的渲染机制,以满足特定的输出需求。Renderer...
- **验证器和转换器**:验证器用于确保用户输入的数据符合预期格式或规则,而转换器则是将用户输入的数据转换为适当的类型。通过具体示例展示了这两种组件的应用场景。 - **国际化**:为了支持多种语言和地区,JSF...
- **自订转换器**:指导如何编写自定义的转换器以满足特定需求。 - **标准验证器**:提供内置的验证器列表,用于检查用户输入的有效性。 - **自订验证器**:教授如何创建自定义验证器以执行特定的验证逻辑。 - *...
遗憾的是,描述中提到PDF版缺少了"自订元件"一章,这意味着你将无法从该版本中学习到有关自定义JSF组件的详细信息。不过,HTML版完整,你可以通过它来弥补这部分的缺失。 总之,JSF入门教材是初学者了解和掌握JSF...
你可以通过注解或XML配置文件定义自定义的转换器和验证器,例如确保用户输入的比萨数量是正整数,或者比萨类型存在于预定义的列表中。 此外,JSF支持**导航规则**,定义了在用户操作后如何跳转到下一个页面。在比萨...
- **转换器**:用于在模型数据类型和视图组件数据类型之间进行转换,例如将字符串转换为日期或数值。 - **验证器**:确保输入的数据符合特定的格式或规则,如邮箱格式验证、必填字段检查等。 **2.4 事件处理** - *...
**自订转换器** - **自定义扩展**:讲解如何根据特定需求自定义转换器,以满足非标准的数据转换需求。 - **开发指南**:提供自定义转换器的开发指南和示例代码。 **标准验证器** - **内置验证**:介绍JSF提供的...
Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................
- **JSF配置文件**:`faces-config.xml`定义了JSF视图的配置信息,包括转换器、验证器等。 - **EJB部署描述符**:`ejb-jar.xml`配置了EJB模块的信息,如事务管理、安全性等。 - **持久化部署描述符**:`persistence....
- **转换器**:Seam 支持自定义转换器,用于在视图和模型之间转换数据。 #### 第二部分:点击列表示例 本节通过一个消息管理示例介绍了如何在 Seam 中实现点击列表功能。 **1.3.1 理解代码** - **1.3.1.1 实体类...
7. **Servlet过滤器和监听器**:过滤器用于拦截请求和响应,可以进行权限控制、字符编码转换等操作;监听器则可以监听Web应用中的各种事件,如会话创建、销毁等,进行相应的处理。 8. **Spring框架**:虽然未明确...
以 Tiles 为例 自订 View Class 与其它 Web 框架的整合 您可以将 Spring 与现在的一些 Web 框架结合在一起,重点都在于如何让 Web 框架意识到 Spring 的存在。 第一个 Struts 程式 在 Struts...
2. **Web开发框架**:这个管理系统可能使用了某种Web开发框架,如Struts、Spring MVC或JSF等,这些框架能简化MVC(Model-View-Controller)模式的实现,提高开发效率和代码组织性。 3. **数据库管理**:酒店管理...