JSF Converter介绍与使用

JSF提供Converter机制对用户输入,以及画面输出值进行变换。
          JSF提供了一些默认的Converter实现,同时也提供了接口可以让用户实现自定义Converter。本文对JSF的Converter的原理机制,功能,实现方法等做一个介绍 :

      1,输入变换:在用户1,输入变换:在用户提交时对用户输入值进行变换

       2,输出变换:在画面显示前对显示值进行变换

在JSF的几个生命周期阶段,分别会在以下几个阶段调用组件的Converter:
1,对于UIInput组件:如果按钮事件的immediate属性为true(<h:commandButton immediate="true" .../>),JSF会在 [Apply Request Values Phase:应用请求值阶段],反之,JSF会在[Process Validations Phase:数据检查阶段] 检验用户输入的有效性,有效的情况下会调用绑定到该UIInput组件的Converter对用户输入进行转换。同时,跟UIOutput组件一样,JSF会在[Render Response:重画画面阶段]调用Converter对UIInput进行显示前的变换处理
2,对于UIOutput组件:JSF会在[Render Response:重画画面阶段]调用绑定到该UIOutput组件的Converter对将要显示的值进行变换。

TypeClassNameFor conversion between...
BigDecimal

BigDecimalConverter

javax.faces.BigDecimal

String and

java.math.BigDecimal

values

BigInteger

BigIntegerConverter

javax.faces.BigInteger

String and

java.math.BigInteger

values

Boolean and boolean

BooleanConverter

javax.faces.Boolean

String and

java.lang.Boolean

(and boolean primitive) values

Byte and byte

ByteConverter

javax.faces.Byte

String and

java.lang.Number

values

Character and char

CharacterConverter

javax.faces.Character

String and

java.lang.Character

(and char primitive) values

Double and double

DoubleConverter

javax.faces.Double

String and

java.lang.Double

(and double primitive) values

Float and float

FloatConverter

javax.faces.Float

String and

java.lang.Float

(and float primitive) values

Integer and int

IntegerConverter

javax.faces.Integer

String and

java.lang.Integer

(and int primitive) values

Long and long

LongConverter

javax.faces.Long

String and

java.lang.Long

(and long primitive) values

Short and short

ShortConverter

javax.faces.Short

String and

java.lang.Short

(and short primitive) values

JSF跟Converter有关的标签:
<h:inputHidden  converter=" "></h:inputHidden>
<h:inputSecret converter=" "></h:inputSecret>
<h:inputText converter=" "></h:inputText>
<h:inputTextarea converter=" "></h:inputTextarea>
<h:outputFormat converter=" "></h:outputFormat>
<h:outputLabel converter=" "></h:outputLabel>
<h:outputLink converter=" "></h:outputLink>
<h:outputText converter=" "></h:outputText>
<h:selectBooleanCheckbox converter=" "></h:selectBooleanCheckbox>
<h:selectManyCheckbox converter=" "></h:selectManyCheckbox>
<h:selectManyListbox converter=" "></h:selectManyListbox>
<h:selectManyMenu converter=" "></h:selectManyMenu>
<h:selectOneListbox converter=" "></h:selectOneListbox>
<h:selectOneMenu converter=" "></h:selectOneMenu>
<h:selectOneRadio converter=" "></h:selectOneRadio>
<f:converter  converterId=" "></f:converter>
<f:convertDateTime></f:convertDateTime>
<f:convertNumber></f:convertNumber>

其中h:inputHidden等标签的converter属性以及f:converter标签的converterId属性为被定义的converter-id,或指定为javax.faces.convert.Converter的实例。该调用方法不能向Converter传递参数。
f:converter,f:convertDateTime或其他自定义Converter标签可以对h:inputHidden,h:inputText,h:selectOneRadio等父标签的value值进行变换。

JSF Converter的使用:

使用converter属性调用指定id的Converter,例:

<h:inputHidden converter=" javax.faces.DateTime" value=" #{myBean.datetime}" />


使用f:converter标签调用指定id的Converter,例:

<h:inputText value=" #{myBean.datetime}">
    <f:converter converterId=" javax.faces.DateTime"></f:converter>
</h:inputText>


使用f:convertNumber等Converter标签或自定义Converter标签,例:

<h:inputText value=" #{myBean.datetime}">
    <f:convertNumber type=" number" pattern=" #,###"/>
</h:inputText>


上面我们介绍了JSF Converter的基本概念,功能,JSF提供的默认Converter实现以及Converter的使用方法等。在下文中,我们将介绍如何自定义JSF Converter。



--------------------------------------------------------------------

转自:http://xiejibin.blog.163.com/blog/static/538770992008816359667/

参考:http://docs.oracle.com/javaee/6/api/javax/faces/convert/Converter.html


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值