《第四章验证和转换优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第四章验证和转换优秀PPT.ppt(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第四章验证和转换第一页,本课件共有21页引言q上两章里我们分别讨论了UI组件模型和事件处理模型,这些基本是JSF的MVC框架的核心了q但对于一个完整的JSF框架中还包括一些辅助组件:q格式化 和 转换器q验证器qJSF提供了两种方式来实现以上,本章将介绍这些组件在JSF框架中如何使用和如何扩展第二页,本课件共有21页本章目标q转换器和验证器简介q转换器处理模型q使用转换器q格式化 java.text.NumberFormat DateFormatq内置转换器q自定义扩展转换器q验证处理模型q使用内置验证器q自定义扩展验证器第三页,本课件共有21页转换器和验证器简介qJSF框架提供了验证器用来验
2、证数据规则,一些默认规则被定义再javax.faces.validator包中,这些规则都实现Validator接口qJSF框架同时还提供了转换器,把页面串转换成程序对应处理的数据类型,或把程序中的数据类型转换成相应的字符串格式输出。该功能在javax.faces.convert包中,转换器都实现了Converter接口q以上两个工作都是在请求生命周期的Process Validations阶段完成的;当然如果UI组件实现了ActionSource接口或EditableValueHolder接口,并把immediate property设置true,其将在Apply Request Value
3、s阶段进行。第四页,本课件共有21页转换器处理模型q首先我们来讨论转换器(Converter),显然转换过程是一个双向的;一方面把请求的字符串数据转换成Java数据类型,另一方面把Java数据类型转换成字符串。q在处理用户请求阶段(inbound),用户请求的字符串通常都会包含格式化信息(如:日期,信用卡等);当数据通过验证以后,将调用Converter的getAsObejct方法把字符串转换成相应的数据类型。(图解)q在处理回复阶段(outbound),服务器回复的字符串通常会把数据类型转换成视图的格式化字符串(图解)第五页,本课件共有21页inbound阶段的转换第六页,本课件共有21页o
4、utbound阶段的转换第七页,本课件共有21页使用转换器q我们可以在标签的converter属性指定转换器如:qq q此时的Double转换器必须要提供在faces-config.xml 中注册q此后在我们提交数据的时候,会由JSF框架使用默认的DoubleConverter转换器来转换我们的属性q支持converter属性的标签包括:inputText、inputHidden、inputSecret、outputText。qJSF定义了Java常规数据类型的转换器,主要包括:数值类型、日期类型、字符类型和布尔类型。q当然我们也可以自定义转换器,在稍后我们将介绍实现Conerter接口自定义
5、转换器。q当发生异常的时候页面通过标签显示异常信息第八页,本课件共有21页注册转换器q所有要使用的转换器,必须在faces-config.xml中注册Converterq注册方法是,使用标签,如:q Integer javax.faces.convert.IntegerConverter qconvert-id表示在converter属性中用到的名字qconvert-class表示converter的类q用户自定义的Convert也要采用类似的方式第九页,本课件共有21页内置转换器转换器类转换器名称BigDecimalConverter BigDecimalBigIntegerConverte
6、r BigIntegerBooleanConverter BooleanByteConverter ByteCharacterConverter CharacterDateTimeConverter DateTimeDoubleConverter DoubleFloatConverter FloatIntegerConverter IntegerLongConverter LongNumberConverter NumberShortConverterShort第十页,本课件共有21页格式化q从上面的表中我们可以看到 要转换的类型其实只有4类:1.数值类型2.日期类型3.布尔类型4.字符类型q
7、其中数值类型和日期类型,我们可以指定输入/输出格式q 数值格式化q日期格式化第十一页,本课件共有21页数值格式化q使用数值格式化,我们必须在UIInput和UIOutput组件标签,放置子标签:qq该标签的属性用来控制如何格式化qpattern 格式化符号 如:#,#.#qtype 处理数据的类型包括:number,currency,and percent“qgroupingUsed 是否可以使用分隔如:2,000,000 qmaxIntegerDigits minIntegerDigits 整数部分最大小范围qmaxFractionDigits minFractionDigits 小数部分最
8、大小范围第十二页,本课件共有21页日期格式化q日期格式化使用,如:q q其属性包括:qdateStyle 只能是如下值:default,short,medium,long,and full.qpatten 如:M/dd/yyyy qtimeStyle 同dateStyleqtype 必须是:”date”,”time”,”both”第十三页,本课件共有21页自定义扩展转换器q首先,我们先从Converter接口实现我们自己的验证规则。Converter接口要实现两个方法1.public Object getAsObject(FacesContext,UIComponent,String)thro
9、ws ConverterException2.public String getAsString(FacesContext,UIComponent,String)throws ConverterExceptionq当用户扩展完转换器后依然要注册转换器第十四页,本课件共有21页验证处理模型q可以为UIComponent组件定义验证处理过程,以帮助数据的有效性的验证,验证器在生命周期的Process Validations阶段执行。q启动验证器的UI组件必须实现了EditableValueHodler接口或ActionSource的immediate属性设置为true验证器才会在该组件中调用qJS
10、F框架中所有的验证器都必须从javax.faces.validator.Validator接口中实现,并实现validate()方法第十五页,本课件共有21页使用内置验证器q内置的验证器包括:qqqq如:q 第十六页,本课件共有21页验证器方法q在JSF框架中,也许你需要为自己的字段加入一些逻辑的验证规则q此时可以编写自己的验证方法,其方法原形qpublic void methodName(FacesContext,UIComponent,Object)throws ValidatorException q如果通过验证则return,否则抛出ValidatorException异常,并在该异常
11、中绑定消息FacesMessageq在inputText标签中提供了validator属性来绑定验证方法,如:q第十七页,本课件共有21页自定义扩展验证器q自定义验证器必须从Validator接口派生,Validator接口要实现的方法q并在facesconfig.xml文件中进行注册qq验证器名称q验证器类q在JSF组件中使用自定义验证器可以通过标签,如:q第十八页,本课件共有21页本章小结q本章介绍JSF框架的最后一个部分验证器和转换器,其基本处理都是在数据inbound和outbound期间进行,这样用户输入的数据和输出的数据都保证了系统的数据完整性qJSF框架除了提供一组以定义的类,同时提供了良好的扩展框架。q虽然本章介绍完毕了JSF框架,但是对于JSF框架本身也是可扩展的,比如用户也可以自定义组件只要满足JSF框架也能很好的和JSF框架集成。第十九页,本课件共有21页英汉对照qCharacter 字符qConvert 转换qFormat 格式化qRequired 必须的第二十页,本课件共有21页第二十一页,本课件共有21页