欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

使用struts2標簽,毫無疑問要先引入標簽庫:

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

假設radio單選框中List的值為一個Map集合:

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

注:

1.name屬性還是對應HTML代碼的name屬性。
2.listKey屬性對應HTML代碼的value屬性。
3.listValue屬性對應HTML代碼label標簽屬性。
4.value屬性是指:當value的值和集合中的值匹配時就選中(如果value的值為字符串時要加上單引號)。

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

下面我們通過一個案例來說明:

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

最開始的用戶界面:

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

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

用戶界面:

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

后臺action代碼:

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

注:因為我們使用的是枚舉類型,所以要進行類型轉(zhuǎn)換(具體轉(zhuǎn)換方法在前面的博客中有提到)。

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

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

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

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

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

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

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

附:

1.有人可能會有疑問,為什么listKey可以直接寫上key,listValue可以直接寫value。

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

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

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

總結(jié)

這幾篇Struts框架的學習,頗有幾分撥開云霧見青天之感,對于Java框架,算是有了比較清晰的了解,spring,mybatis等,諸如此類,萬法相通。。。

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

相關(guān)文章

  • SpringMVC基于阻塞隊列LinkedBlockingQueue的同步長輪詢功能實現(xiàn)詳解

    SpringMVC基于阻塞隊列LinkedBlockingQueue的同步長輪詢功能實現(xiàn)詳解

    這篇文章主要介紹了SpringMVC基于阻塞隊列LinkedBlockingQueue的同步長輪詢功能實現(xiàn)詳解,本文介紹的也是生產(chǎn)者消費者的一種實現(xiàn),生產(chǎn)者不必是一個始終在執(zhí)行的線程,它可以是一個接口,接受客戶端的請求,向隊列中插入消息,需要的朋友可以參考下
    2023-07-07
  • Spring Boot + thymeleaf 實現(xiàn)文件上傳下載功能

    Spring Boot + thymeleaf 實現(xiàn)文件上傳下載功能

    最近同事問我有沒有有關(guān)于技術(shù)的電子書,我打開電腦上的小書庫,但是郵件發(fā)給他太大了,公司又禁止用文件夾共享,于是花半天時間寫了個小的文件上傳程序,部署在自己的Linux機器上,需要的朋友可以參考下
    2018-01-01
  • Intellj Idea中的maven工程Java文件顏色不對,未被識別的解決

    Intellj Idea中的maven工程Java文件顏色不對,未被識別的解決

    這篇文章主要介紹了Intellj Idea中的maven工程Java文件顏色不對,未被識別的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Java集合框架迭代器Iterator實現(xiàn)原理解析

    Java集合框架迭代器Iterator實現(xiàn)原理解析

    這篇文章主要介紹了Java集合框架迭代器Iterator實現(xiàn)原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • 關(guān)于Spring Boot對jdbc的支持問題

    關(guān)于Spring Boot對jdbc的支持問題

    這篇文章主要介紹了關(guān)于Spring Boot對jdbc的支持問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • 詳解Jmeter中的BeanShell腳本

    詳解Jmeter中的BeanShell腳本

    BeanShell是一種完全符合Java語法規(guī)范的腳本語言,并且又擁有自己的一些語法和方法,所以它和java是可以無縫銜接的,學了Java的一些基本語法后,就可以來在Jmeter中寫寫B(tài)eanShell腳本了
    2021-12-12
  • Java設計模式之解釋器模式

    Java設計模式之解釋器模式

    這篇文章介紹了Java設計模式之解釋器模式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-10-10
  • Log4j關(guān)閉Spring和Hibernate日志打印方式

    Log4j關(guān)閉Spring和Hibernate日志打印方式

    這篇文章主要介紹了Log4j關(guān)閉Spring和Hibernate日志打印方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Spring實戰(zhàn)之使用Resource作為屬性操作示例

    Spring實戰(zhàn)之使用Resource作為屬性操作示例

    這篇文章主要介紹了Spring實戰(zhàn)之使用Resource作為屬性,結(jié)合實例形式分析了spring載人Resource作為屬性相關(guān)配置與使用技巧,需要的朋友可以參考下
    2020-01-01
  • SpringBoot自動配置原理及案例源碼解析

    SpringBoot自動配置原理及案例源碼解析

    這篇文章主要為大家介紹了SpringBoot自動配置原理及自動配置案例源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11

最新評論