日期:2014-05-16  浏览次数:20440 次

JSF入门九(标准转换器)

本文参考

http://www.javaworld.com.tw/confluence/pages/viewpage.action?pageId=2630

?

直接上例子:

package bruce.zhao.model;

import java.util.Date;

public class UserBean {
	private Date date = new Date();

	public Date getDate() {
		return date;
	}

	public void setDate(Date date) {
		this.date = date;
	}
}

?这个Bean的属性接受Date类型的参数,按理来说,接收到HTTP传来的数据中若有相关的日期信息,我们必须剖析这个信息,再转换为Date对象,然而我们可以使用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>
	设定的日期是:
	<b> <h:outputText value="#{user.date}">
		<f:convertDateTime pattern="dd/MM/yyyy" />
	</h:outputText> </b>
	<h:form>
		<h:inputText id="dateField" value="#{user.date}">
			<f:convertDateTime pattern="dd/MM/yyyy" />
		</h:inputText>
		<h:message for="dateField" style="color:red" />
		<br>
		<h:commandButton value="送出" action="show" />
	</h:form>
	</body>
	</html>
</f:view>

在<f:convertDateTime>中,我们使用pattern指定日期的样式为dd/MM/yyyy,即「日/月/公元」格式,如果转换错误,则<h:message>可以显示错误信息,for属性参考至<h:inputText> 的id属性,表示将有关dateField的错误信息显示出来。
假设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>
	<managed-bean>
		<managed-bean-name>user</managed-bean-name>
		<managed-bean-class>
			bruce.zhao.model.UserBean
</managed-bean-class>
		<managed-bean-scope>session</managed-bean-scope>
	</managed-bean>
</faces-config>
?