最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Struts2單選按鈕詳解及枚舉類(lèi)型的轉(zhuǎn)換代碼示例

 更新時(shí)間:2018年02月07日 10:29:21   作者:lavimer  
這篇文章主要介紹了Struts2單選按鈕詳解及枚舉類(lèi)型的轉(zhuǎn)換代碼示例,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下

本文研究的主要是Struts2框架單選按鈕詳解及枚舉類(lèi)型的轉(zhuǎn)換的相關(guān)示例,具體如下。

使用struts2標(biāo)簽,毫無(wú)疑問(wèn)要先引入標(biāo)簽庫(kù):

<%@ taglib prefix="s" uri="/struts-tags"%> 

假設(shè)radio單選框中List的值為一個(gè)Map集合:

<s:radio list="#{'MAN':'男','WOMEN':'女'}" name="gender" listKey="key" listValue="value" value="'MAN'" 
theme="simple"/>

注:

1.name屬性還是對(duì)應(yīng)HTML代碼的name屬性。
2.listKey屬性對(duì)應(yīng)HTML代碼的value屬性。
3.listValue屬性對(duì)應(yīng)HTML代碼label標(biāo)簽屬性。
4.value屬性是指:當(dāng)value的值和集合中的值匹配時(shí)就選中(如果value的值為字符串時(shí)要加上單引號(hào))。

執(zhí)行后會(huì)解析為html代碼,如圖:

下面我們通過(guò)一個(gè)案例來(lái)說(shuō)明:

修改用戶的時(shí)候,跳轉(zhuǎn)到修改界面,在修改界面要回顯用戶的性別,這里性別我們使用枚舉來(lái)表示。

最開(kāi)始的用戶界面:

實(shí)現(xiàn)代碼如下!!!!

項(xiàng)目結(jié)構(gòu):

用戶界面:

<body> 
  <form action="enumAction_test.action" method="post"> 
    請(qǐng)選擇性別: 
    <s:radio list="#{'MAN':'男','WOMEN':'女'}" name="gender" listKey="key" listValue="value" value="'MAN'" theme="simple"/> 
    <input type="submit" value="提交"> 
  </form> 
</body> 

后臺(tái)action代碼:

public class EnumAction {
	/*定義性別,默認(rèn)是男*/
	private Gender gender = Gender.MAN;
	public Gender getGender() {
		return gender;
	}
	public void setGender(Gender gender) {
		this.gender = gender;
	}
	/*測(cè)試方法*/
	public String test(){
		return "success";
	}
}

注:因?yàn)槲覀兪褂玫氖敲杜e類(lèi)型,所以要進(jìn)行類(lèi)型轉(zhuǎn)換(具體轉(zhuǎn)換方法在前面的博客中有提到)。

枚舉類(lèi)型轉(zhuǎn)換類(lèi)代碼:

public class EnumTypeConverter extends DefaultTypeConverter {
	@SuppressWarnings("rawtypes") 
	  @Override 
	  public Object convertValue(Map<String, Object> context, Object value, Class toType) {
		/*從前臺(tái)到后臺(tái)即從字符串轉(zhuǎn)為枚舉類(lèi)型*/
		if (toType == Gender.class){
			/*把value強(qiáng)轉(zhuǎn)為數(shù)組類(lèi)型*/
			String[] params = (String[]) value;
			return Gender.valueOf(params[0]);
		} else if (toType == String.class){
			/*從后臺(tái)action傳到前臺(tái),即Gender類(lèi)型轉(zhuǎn)換為String類(lèi)型 */
			/*把value強(qiáng)轉(zhuǎn)為Gender*/
			Gender gender = (Gender) value;
			return gender.toString();
		}
		return null;
	}
}

定義全局類(lèi)型轉(zhuǎn)的屬性文件:

com.lixue.bean.Gender=com.lixue.converter.EnumTypeConverter 

跳轉(zhuǎn)后的結(jié)果頁(yè)面(用戶修改界面):

<body> 
 您的性別:<s:radio list="#{'MAN':'男','WOMEN':'女'}" name="gender" listKey="key" listValue="value" value="gender" theme="simple"/> 
 </body> 

注:在修改界面是如何實(shí)現(xiàn)用戶當(dāng)前所選性別的回顯呢?關(guān)鍵是看value值,上述代碼中的value我就寫(xiě)了一個(gè)gender,其實(shí)這個(gè)gender是在action中定義的一個(gè)屬性,上一篇文章我們講OGNL的時(shí)候就說(shuō)過(guò),action中的屬性會(huì)保存在值棧中,我們?nèi)≈禇V械膶傩?,直接通過(guò)屬性名稱就可以獲取,不需要通過(guò)#命名空間的形式獲取。獲取完然后和前面的map集合進(jìn)行匹配,判斷是否勾選。

附:

1.有人可能會(huì)有疑問(wèn),為什么listKey可以直接寫(xiě)上key,listValue可以直接寫(xiě)value。

解答:struts2在解析<s:radio>標(biāo)簽中的那個(gè)list集合時(shí),使用的是Iterator,iterator的功能是每次循環(huán)都會(huì)將結(jié)果(每次獲取一個(gè)Entry對(duì)象)保存在值棧的棧頂,所以通過(guò)OGNL表達(dá)式取值的時(shí)候,直接通過(guò)對(duì)象的屬性(Entry的屬性名稱為key和value)名稱來(lái)取值即可,不需要使用#命名空間的方式,不明白OGNL表達(dá)式的同學(xué)可以看上一篇文章。

2.我們會(huì)發(fā)現(xiàn)在寫(xiě)標(biāo)簽的時(shí)候我們總會(huì)寫(xiě)theme這個(gè)屬性,這個(gè)屬性的功能是為了避免struts2在解析標(biāo)簽的時(shí)候,生成一些不必要的代碼,但是每次都要寫(xiě),豈不是很坑爹,其實(shí)我們可以在struts.xml文件中配置一個(gè)常量就可以達(dá)到效果:

<!--struts2標(biāo)簽主題樣式--> 
  <constant name="struts.ui.theme" value="simple" /> 

總結(jié)

這幾篇Struts框架的學(xué)習(xí),頗有幾分撥開(kāi)云霧見(jiàn)青天之感,對(duì)于Java框架,算是有了比較清晰的了解,spring,mybatis等,諸如此類(lèi),萬(wàn)法相通。。。

以上就是本文關(guān)于Struts2單選按鈕詳解及枚舉類(lèi)型的轉(zhuǎn)換代碼示例的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

相關(guān)文章

  • 淺談java中的局部變量和全局變量

    淺談java中的局部變量和全局變量

    這篇文章主要涉及了java中的局部變量和全局變量,就二者的含義、生存時(shí)間和創(chuàng)建位置作了介紹,需要的朋友可以參考下。
    2017-09-09
  • 詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)

    這篇文章主要介紹了詳解Spring Cloud 斷路器集群監(jiān)控(Turbine),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-05-05
  • SpringAOP實(shí)現(xiàn)登錄驗(yàn)證的操作代碼

    SpringAOP實(shí)現(xiàn)登錄驗(yàn)證的操作代碼

    這篇文章主要介紹了SpringAOP實(shí)現(xiàn)登錄驗(yàn)證功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • postman中實(shí)現(xiàn)傳遞@RequestBody參數(shù)

    postman中實(shí)現(xiàn)傳遞@RequestBody參數(shù)

    這篇文章主要介紹了postman中實(shí)現(xiàn)傳遞@RequestBody參數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • 詳解使用批處理方式配置Java環(huán)境

    詳解使用批處理方式配置Java環(huán)境

    這篇文章主要介紹了詳解使用批處理方式配置Java環(huán)境,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • IDEA巧用Postfix Completion讓碼速起飛(小技巧)

    IDEA巧用Postfix Completion讓碼速起飛(小技巧)

    這篇文章主要介紹了IDEA巧用Postfix Completion讓碼速起飛,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • SpringBoot3整合郵件服務(wù)實(shí)現(xiàn)郵件發(fā)送功能

    SpringBoot3整合郵件服務(wù)實(shí)現(xiàn)郵件發(fā)送功能

    本文介紹了spring boot整合email服務(wù),實(shí)現(xiàn)發(fā)送驗(yàn)證碼,郵件(普通文本郵件、靜態(tài)資源郵件、附件郵件),文中通過(guò)代碼示例介紹的非常詳細(xì),堅(jiān)持看完相信對(duì)你有幫助,需要的朋友可以參考下
    2024-05-05
  • 簡(jiǎn)單總結(jié)單例模式的4種寫(xiě)法

    簡(jiǎn)單總結(jié)單例模式的4種寫(xiě)法

    今天帶大家學(xué)習(xí)java的相關(guān)知識(shí),文章圍繞著單例模式的4種寫(xiě)法展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細(xì)教程

    一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細(xì)教程

    使用SSM(Spring、SpringMVC和Mybatis)已經(jīng)有段時(shí)間了,項(xiàng)目在技術(shù)上已經(jīng)沒(méi)有什么難點(diǎn)了,基于現(xiàn)有的技術(shù)就可以實(shí)現(xiàn)想要的功能,下面這篇文章主要給大家介紹了關(guān)于整合SSM框架:Spring MVC + Spring + MyBatis的相關(guān)資料,需要的朋友可以參考下。
    2017-07-07
  • 詳解Java如何在Array和List之間進(jìn)行轉(zhuǎn)換

    詳解Java如何在Array和List之間進(jìn)行轉(zhuǎn)換

    這篇文章主要為大家介紹了詳解Java如何在Array和List之間進(jìn)行轉(zhuǎn)換的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05

最新評(píng)論

巩义市| 汶川县| 峨边| 泰和县| 新昌县| 汝南县| 太湖县| 浦江县| 天镇县| 历史| 青铜峡市| 商洛市| 庆城县| 都昌县| 和顺县| 宁蒗| 遵义市| 三门峡市| 密山市| 昌宁县| 冷水江市| 太仓市| 阿坝| 永泰县| 汾西县| 岑溪市| 闸北区| 龙川县| 河北区| 鱼台县| 滁州市| 龙山县| 都兰县| 勃利县| 济南市| 阿克苏市| 旌德县| 格尔木市| 大安市| 枣庄市| 东莞市|