《类型转换学习.pptx》由会员分享,可在线阅读,更多相关《类型转换学习.pptx(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、类型转换在网页所处理和提交的任何内容,都是字符串类型的,所以必须通过类型转换将字符串转换成为java数据类型第1页/共48页Struts2类型转换器内建的类型转换器支持以下几种简单数据类型转换:booleancharintfloatlongdoubleDate数组和集合第2页/共48页建立product.jsp假设有一个product.jsp页面,希望通过该页面,将某产品的name,price,count三个属性一起输入到后台,之间用“,”间隔第3页/共48页Product.java完成一个POJO类名为Product,放入bean包三个属性private String nameprivate
2、 float priceprivate int count以及这些属性的setter和getter第4页/共48页ProductAction.javaAction的设计类名为ProductAction,放入action包 一个属性private Product product该属性的setter和getter返回值为success的execute方法该方法抛出Exception异常第5页/共48页配置struts.xml在包中增加如下代码:第6页/共48页类型转换器基于OGNL实现提供了ognl.TypeConverter接口所有类型转换器必须实现该接口TypeConverter接口的默认实现
3、类DefaultTypeConverter通过继承该类,也可以实现类型转换在DefaultTypeConverter中一般只需覆盖convertValue第7页/共48页继承DefaultTypeConverter第8页/共48页Override convertValue方法第9页/共48页Override convertValue方法(con)第10页/共48页convertValue方法该方法是双向转换从字符串转换成Product从Product转换成字符串当从字符串向Product转换的时候,客户端请求参数只有1个product,为了通用性,即使只有一个请求参数,也用数组表示第11页/共
4、48页安装局部类型转换器局部类型转换器安装在action包中,建立一个文件ActionName-conversion.propertiesActionName为Action类的全名后缀-conversion.properties不变该文件内容:属性名=转换器类第12页/共48页Productdetail.jsp对应结果:第13页/共48页两个以上信息输入的处理修改product.jsp如右:修改product.jsp代码如下:第14页/共48页修改productdetail.jsp代码如下第15页/共48页修改ProductActin.java代码如下:第16页/共48页修改ProductAc
5、tion-conversion.properties修改如下:第17页/共48页局部类型转换 vs 全局类型转换注册全局变量的文件xwork-conversion.properties放置如右图位置该文件内容:属性类名=转换器类注册完成后,与前所示局部类型转换效果相同第18页/共48页Struts提供StrutsTypeConverter该类,有两个主要抽象方法:convertFromStringconvertToString第19页/共48页继承StrutsTypeConverter第20页/共48页重写抽象方法第21页/共48页convertFromString第22页/共48页conve
6、rtToString第23页/共48页xwork-conversion.properties修改第24页/共48页观察结果第25页/共48页数组类型转换器相同类型的数据不止一个的情况下,使用数组类型处理将是的程序变得简洁,这是常识Struts数组类型转换器提供了这样的功能如果在请求中多个参数使用同一名称请求,就会在字符串数组中出现多个元素第26页/共48页创建products.jsp代码如下:第27页/共48页与前例不同的是,所有的的name属性均为products第28页/共48页ProductsAction.java使用了Product封装了多个products请求参数第29页/共48页P
7、roductsStrutsConverter.java第30页/共48页convertFromString方法多个参数的情况与1个参数的情况分开第31页/共48页convertToString方法第32页/共48页xwork-conversion.properties修改第33页/共48页productsdetail.jsp第34页/共48页集合类型转换器除了用数组封装外,还可以使用List封装多个同名的请求参数在ProductsAction2.java中,加入一个List类型的productList属性第35页/共48页ProductsStrutsConverter2.java第36页/共4
8、8页converterFromString使用arg2来判断是处理List还是处理数组第37页/共48页convertToString方法第38页/共48页xwork-conversion.properties第39页/共48页struts.xml第40页/共48页观察结果寻找错误,并进行修改第一个发现错误期末考试加分5第41页/共48页OGNL表达式进行类型转换回到action包的ProductAction.java创建jsp页面使用ognl表达式将请求参数进行类型转换第42页/共48页OGNL表达式可以省略编写类型转换器的步骤jsp页面中的各个s:textfield的name属性为Product类的属性名Struts2根据请求参数,自动创建Product对象,并给属性赋值第43页/共48页OGNL表达式对MAP的支持Action类需要有一个Map类型的属性代码如下第44页/共48页productMap.jsp其中,SN01,SN02为keyproductMapDetail.jsp第45页/共48页观察结果第46页/共48页第47页/共48页感谢您的观看!第48页/共48页