Struts2單選按鈕詳解及枚舉類型的轉(zhuǎn)換代碼示例
本文研究的主要是Struts2框架單選按鈕詳解及枚舉類型的轉(zhuǎn)換的相關(guān)示例,具體如下。
使用struts2標(biāo)簽,毫無疑問要先引入標(biāo)簽庫:
<%@ taglib prefix="s" uri="/struts-tags"%>
假設(shè)radio單選框中List的值為一個Map集合:
<s:radio list="#{'MAN':'男','WOMEN':'女'}" name="gender" listKey="key" listValue="value" value="'MAN'"
theme="simple"/>
注:
1.name屬性還是對應(yīng)HTML代碼的name屬性。
2.listKey屬性對應(yīng)HTML代碼的value屬性。
3.listValue屬性對應(yīng)HTML代碼label標(biāo)簽屬性。
4.value屬性是指:當(dāng)value的值和集合中的值匹配時就選中(如果value的值為字符串時要加上單引號)。
執(zhí)行后會解析為html代碼,如圖:

下面我們通過一個案例來說明:
修改用戶的時候,跳轉(zhuǎn)到修改界面,在修改界面要回顯用戶的性別,這里性別我們使用枚舉來表示。
最開始的用戶界面:

實(shí)現(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 {
/*定義性別,默認(rèn)是男*/
private Gender gender = Gender.MAN;
public Gender getGender() {
return gender;
}
public void setGender(Gender gender) {
this.gender = gender;
}
/*測試方法*/
public String test(){
return "success";
}
}
注:因為我們使用的是枚舉類型,所以要進(jìn)行類型轉(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強(qiáng)轉(zhuǎn)為數(shù)組類型*/
String[] params = (String[]) value;
return Gender.valueOf(params[0]);
} else if (toType == String.class){
/*從后臺action傳到前臺,即Gender類型轉(zhuǎn)換為String類型 */
/*把value強(qiáng)轉(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>
注:在修改界面是如何實(shí)現(xiàn)用戶當(dāng)前所選性別的回顯呢?關(guān)鍵是看value值,上述代碼中的value我就寫了一個gender,其實(shí)這個gender是在action中定義的一個屬性,上一篇文章我們講OGNL的時候就說過,action中的屬性會保存在值棧中,我們?nèi)≈禇V械膶傩裕苯油ㄟ^屬性名稱就可以獲取,不需要通過#命名空間的形式獲取。獲取完然后和前面的map集合進(jìn)行匹配,判斷是否勾選。
附:
1.有人可能會有疑問,為什么listKey可以直接寫上key,listValue可以直接寫value。
解答:struts2在解析<s:radio>標(biāo)簽中的那個list集合時,使用的是Iterator,iterator的功能是每次循環(huán)都會將結(jié)果(每次獲取一個Entry對象)保存在值棧的棧頂,所以通過OGNL表達(dá)式取值的時候,直接通過對象的屬性(Entry的屬性名稱為key和value)名稱來取值即可,不需要使用#命名空間的方式,不明白OGNL表達(dá)式的同學(xué)可以看上一篇文章。
2.我們會發(fā)現(xiàn)在寫標(biāo)簽的時候我們總會寫theme這個屬性,這個屬性的功能是為了避免struts2在解析標(biāo)簽的時候,生成一些不必要的代碼,但是每次都要寫,豈不是很坑爹,其實(shí)我們可以在struts.xml文件中配置一個常量就可以達(dá)到效果:
<!--struts2標(biāo)簽主題樣式--> <constant name="struts.ui.theme" value="simple" />
總結(jié)
這幾篇Struts框架的學(xué)習(xí),頗有幾分撥開云霧見青天之感,對于Java框架,算是有了比較清晰的了解,spring,mybatis等,諸如此類,萬法相通。。。
以上就是本文關(guān)于Struts2單選按鈕詳解及枚舉類型的轉(zhuǎn)換代碼示例的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
詳解Spring Cloud 斷路器集群監(jiān)控(Turbine)
這篇文章主要介紹了詳解Spring Cloud 斷路器集群監(jiān)控(Turbine),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05
SpringAOP實(shí)現(xiàn)登錄驗證的操作代碼
這篇文章主要介紹了SpringAOP實(shí)現(xiàn)登錄驗證功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01
postman中實(shí)現(xiàn)傳遞@RequestBody參數(shù)
這篇文章主要介紹了postman中實(shí)現(xiàn)傳遞@RequestBody參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
IDEA巧用Postfix Completion讓碼速起飛(小技巧)
這篇文章主要介紹了IDEA巧用Postfix Completion讓碼速起飛,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
SpringBoot3整合郵件服務(wù)實(shí)現(xiàn)郵件發(fā)送功能
本文介紹了spring boot整合email服務(wù),實(shí)現(xiàn)發(fā)送驗證碼,郵件(普通文本郵件、靜態(tài)資源郵件、附件郵件),文中通過代碼示例介紹的非常詳細(xì),堅持看完相信對你有幫助,需要的朋友可以參考下2024-05-05
一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)詳細(xì)教程
使用SSM(Spring、SpringMVC和Mybatis)已經(jīng)有段時間了,項目在技術(shù)上已經(jīng)沒有什么難點(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)換的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05

