類型轉(zhuǎn)換
創(chuàng)新互聯(lián)公司是一家集網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、網(wǎng)站頁面設(shè)計、網(wǎng)站優(yōu)化SEO優(yōu)化為一體的專業(yè)的建站公司,已為成都等多地近百家企業(yè)提供網(wǎng)站建設(shè)服務(wù)。追求良好的瀏覽體驗(yàn),以探求精品塑造與理念升華,設(shè)計最適合用戶的網(wǎng)站頁面。 合作只是第一步,服務(wù)才是根本,我們始終堅持講誠信,負(fù)責(zé)任的原則,為您進(jìn)行細(xì)心、貼心、認(rèn)真的服務(wù),與眾多客戶在蓬勃發(fā)展的市場環(huán)境中,互促共生。所有的頁面與控制器傳遞的數(shù)據(jù)都是String類型,在對其進(jìn)行處理時可能會用到各種的數(shù)據(jù)類型,程序無法自動完成數(shù)據(jù)類型的轉(zhuǎn)換,這就需要我們在代碼中進(jìn)行手手動操作,這個過程就稱為類型轉(zhuǎn)換。
內(nèi)置類型轉(zhuǎn)換器
在Web應(yīng)用程序中,用戶在視圖層輸入的數(shù)據(jù)都是字符串,業(yè)務(wù)控制層在處理這些數(shù)據(jù)時,就必須把從視圖層傳遞過來的字符串進(jìn)行類型轉(zhuǎn)換。Struts2提供了簡單易用的數(shù)據(jù)類型轉(zhuǎn)換機(jī)制,struts2提供的類型轉(zhuǎn)換如下:
1)String:將int、long、double、boolean、String類型的數(shù)組對象轉(zhuǎn)換為字符串
2)boolean/Boolean:在字符串和布爾值之間進(jìn)行轉(zhuǎn)換
3)char/Character:在字符串和字符之間進(jìn)行轉(zhuǎn)換
4)int/Integer,float/Float、long/Long、double/Double:在字符串和數(shù)值類型的數(shù)據(jù)之間進(jìn)行轉(zhuǎn)換
5)Date:在字符串和日期類之間進(jìn)行轉(zhuǎn)換。對于日期類型,采用SHORT格式來處理輸入和輸出,使用當(dāng)前請求關(guān)聯(lián)的Locale來確定日期格式
6)數(shù)組類型(Array):由于數(shù)組元素本身就有類型,struts2使用元素類型對應(yīng)的類型轉(zhuǎn)換器,將字符串轉(zhuǎn)換為數(shù)組元素的類型,然后再設(shè)置到新的數(shù)組中
7)Collection、List、Set:struts2會將用戶提交的字符串?dāng)?shù)據(jù)使用request對象的getparameterValues(string str)方法,將返回的字符串?dāng)?shù)據(jù)轉(zhuǎn)換成集合類型
OGNL表達(dá)式
Struts2框架支持OGNL表達(dá)式,通過OGNL表達(dá)式可以將用戶請求轉(zhuǎn)換為復(fù)合類型。
使用類型轉(zhuǎn)換注解
Struts2提供了一些類型轉(zhuǎn)換注解來配置轉(zhuǎn)換器,使得能夠代替ClassName-conversion.properties文件,其中包括以下注解:
1)TypeConversion注解。該注解應(yīng)用于屬性和方法級別。
2)Conversion注解。Conversion注解讓類型轉(zhuǎn)換應(yīng)用到類型級別,即可以應(yīng)用到類、接口或枚舉聲明。該注解只有一個參數(shù)conversions。
3)Element注解。Element注解用于指定Collection或Map中的元素類型,該注解只能用于字段或方法級別。
4)Key注解。Key注解用于指定Map中的Key的類型,該注解只能用于字段或方法級別。
5)KeyProperty注解。Keyproperty注解指定用于索引集合元素中的屬性名,該注解只適用于字段或方法級別
6)CreatelfNull注解。CreateifNull注解指定在引用的集合元素為null時,是否讓框架重新創(chuàng)建該集合元素。該注解只適用于字段或方法級別
一個簡單的添加商品信息的實(shí)例:
在配置好Struts2環(huán)境后,
商品類:
package com.mxl.entity; public class Product { private String name;//商品名稱 private double price;//商品價格 private int num;//入庫數(shù)量 private String content;//商品描述 public String getName() { return name; } public void setName(String name) { this.name = name; } public double getPrice() { return price; } public void setPrice(double price) { this.price = price; } public int getNum() { return num; } public void setNum(int num) { this.num = num; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } }