文档章节

JSF---->标准转换器(Converter)

小强斋太
 小强斋太
发布于 2016/11/09 20:06
字数 718
阅读 9
收藏 0

转换器(Converter)协助模型与视图之间的数据转换


标准转换器

 Web应用程序与浏览器之间是使用HTTP进行沟通,所有传送的数据基本上都是字符串文字,而Java应用程序本身基本上则是对象,所以对象数据必须经由转换传送给浏览器,而浏览器送来的数据也必须转换为对象才能使用。

JSF定义了一系列标准的转换器(Converter),对于基本数据型态(primitive type)或是其Wrapper类别,JSF会使用javax.faces.Boolean、javax.faces.Byte、 javax.faces.Character、javax.faces.Double、javax.faces.Float、 javax.faces.Integer、javax.faces.Long、javax.faces.Short等自动进行转换,对于 BigDecimal、BigInteger,则会使用javax.faces.BigDecimal、javax.faces.BigInteger自动进行转换。

至于DateTime、Number,我们可以使用<f:convertDateTime>、<f:convertNumber>标签进行转换,它们各自提供有一些简单的属性,可以让我们在转换时指定一些转换的格式细节。

来看个简单的例子,首先我们定义一个简单的Bean:

UserBean.java

package wsz.ncepu;

 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的标准转换器来协助这项工作,例如:

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=utf-8"%>

 <f:view>

<html>
 <head>
 <title>转换器示范</title>
 </head>
 <body>

 设定的日期是:
           <b>
           <h:outputText value="#{user.date}">
               <f:convertDateTime pattern="yyyy/MM/dd"/>
           </h:outputText>
           </b>

    <h:form>
        <h:inputText id="dateField" value="#{user.date}">
            <f:convertDateTime pattern="yyyy/MM/dd"/>
        </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'?>

<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
    version="1.2">
 
    <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>
            wsz.ncepu.UserBean
        </managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
 </faces-config>

首次连上页面时显示的画面如下:

如您所看到的,转换器自动依pattern设定的样式将Date对象格式化了,当您依格式输入数据并送出后,转换器也会自动将您输入的数据转换为Date对象,如果转换时发生错误,则会出现以下的讯息:

 Using the Standard Converters 这篇文章中有关于标准转换器的说明。

 http://oss.org.cn/ossdocs/java/ee/javaeetutorial5/doc/JSFPage7.html
 

 

 

本文转载自:http://www.cnblogs.com/xqzt/archive/2012/05/17/5637348.html

共有 人打赏支持
小强斋太
粉丝 0
博文 181
码字总数 0
作品 0
广州
私信 提问
Java Server Faces (JSF) 页面转换与验证(一)

由于primefaces在国内使用的并不是太多,因此,国内对jsf做系统、详细的介绍的资料很少,即使有一些资料,也仅仅是对国外资料的简单翻译或者是仅仅讲表面现象(皮毛而已),它们的语句甚至还...

码上中国博客
2015/02/03
0
0
JSF 探索 (1)

JSF 探索 (1) 虽然JSF已经出来好久了,而且好像感觉不是很潮流的框架了,然后当我看见他的时候,我觉得他的思想很好,而且随着手机等client多样化的出现,我相信人们 必将重新拾起JSF的思想...

linugb118
2010/11/04
0
0
如何将Spring Bean注入到JSF Converter

在项目中,因为想在自定义的JSF Converter中使用Spring Bean,经过搜索和测试,有两种方式可以达到目的 1)使用工具类获取Spring Bean,这个是最容易想到的 //需要在Spring配置文件设置//<be...

huntering
2014/01/11
0
0
7.盘点springmvc的常用接口之Converter(下篇)

前两章介绍了、以及衍生出来的、,最后附录罗列了Spring自带的各种转换器。这么多的转换器,我们开发者可不想在要使用转换器时还自己来查找转换器使用。所以为了统一调用进行类型转换,Sprin...

_Core
2016/07/05
219
0
Spring核心——数据的类型转换

在字符串到实体转换一文中介绍了Spring核心框架中使用PropertyEditor将任何字符串转换为数字、实体的方法。除了字符串到实体,Spring还提供了更加通用的功能在对象和对象之间进行数据转换。 ...

随风溜达的向日葵
09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CAS和AQS

CAS(Compare And Swap) 什么是CAS CAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制。 CAS是一种系统原语,原语属于操作系统用语范畴,是由若干条...

狼王黄师傅
28分钟前
2
0
Python利用pandas处理Excel数据的应用

Python利用pandas处理Excel数据的应用 最近迷上了高效处理数据的pandas,其实这个是用来做数据分析的,如果你是做大数据分析和测试的,那么这个是非常的有用的!!但是其实我们平时在做自动化...

上官夏洛特
42分钟前
2
0
100:代码管理平台svn

1:代码管理平台:代码版本管理工具,工作中用于代码更新,代码发布统计,代码版本控制;(频繁更新代码的版本记录),方便查阅历史变更,协同开发及合并; 版本管理工具发展: cvs(编码兼容不太好)...

芬野de博客
42分钟前
1
0
Linux学习-1101(rsync下、log、screen)

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 一、 rsync通过服务同步 rsync 通过服务的方式同步,首先需要开启一个服务。它是C/S架构,开启rsync服务,默认端口是8...

wxy丶
49分钟前
1
0
使用jpmml-sparkml-executable生成PMML模型文件

加载依赖的jar包通过./spark-shell --jars ./jpmml-sparkml-executable-1.2.13.jar 启动spark import org.apache.spark.ml.classification.LogisticRegressionimport org.apache.spark.m......

KYO4321
53分钟前
1
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部