九九热这里直有精品,1区二区三区在线播放,玖玖爱在线观看资源,国产aⅴ综合网,午夜福利男女,日本亚洲欧美三级,日韩无码黄色导航,内射少妇13区,中文字幕高清网

您身邊的軟件定制專家--9年開發(fā)經(jīng)驗(yàn)為您護(hù)航

18678812288
0531-88887250

java struts2入門學(xué)習(xí)---自定義類型轉(zhuǎn)換

文章作者:濟(jì)南軟件開發(fā) 時(shí)間:2016年11月08日

  自定義類型轉(zhuǎn)換器的作用就是將struts無法識別的類型轉(zhuǎn)換成自己所需要的.

  比如輸入:廣東-東莞-虎門,對應(yīng)的輸出時(shí)能輸出:廣東省 東莞市 虎門(鎮(zhèn)/區(qū))

  這里涉及到的知識點(diǎn)即是將String轉(zhuǎn)換為任意的JavaBean類型.

  一.實(shí)現(xiàn)代碼

  程序配置入口:struts.xml

  復(fù)制代碼

  <?xml version="1.0" encoding="UTF-8" ?>

  <!DOCTYPE struts PUBLIC

  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

  "http://struts.apache.org/dtds/struts-2.3.dtd">

  <struts>

  <!--<include file="config/upload.xml"></include> -->

  <!-- 加載其他配置文件 -->

  <!-- <include file="config/upload-interceptor.xml"></include> -->

  <!-- 加載屬性文件-國際化 -->

  <!-- <constant name="struts.custom.i18n.resources" value="message"></constant> -->    <!-- 結(jié)果集 -->

  <!-- <include file="config/result_struts.xml"></include> -->

  <!-- 類型轉(zhuǎn)換 -->

  <include file="config/type_struts.xml"></include>

  <!-- 文件下載 -->

  <!-- <include file="config/download_struts.xml"></include> -->

  </struts>

  復(fù)制代碼

  注:struts.xml是在項(xiàng)目運(yùn)行的過程中被加載進(jìn)入內(nèi)存的,是項(xiàng)目配置的總?cè)肟?這里使用<include>屬性加載外部的type_struts.xml

  type_struts.xml

  復(fù)制代碼

  <?xml version="1.0" encoding="UTF-8" ?>

  <!DOCTYPE struts PUBLIC

  "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

  "http://struts.apache.org/dtds/struts-2.3.dtd">

  <struts>

  <!--     <package name="type" extends="struts-default">

  <action name="TypeAction" class="type.TypeAction" method="execute">

  <result name="success" type="dispatcher">

  /WEB-INF/type_success.jsp

  </result>

  <result name="input" type="dispatcher">

  type.jsp

  </result>

  </action>

  </package> -->

  <package name="type" extends="struts-default">

  <action name="TypeSelfAction" class="type.TypeSelfAction" method="execute">

  <result name="success" type="dispatcher">

  /WEB-INF/type_self_success.jsp

  </result>

  <result name="input" type="dispatcher">

  /type_self.jsp

  </result>

  </action>

  </package>

  </struts>

  復(fù)制代碼

  注:type_struts.xml是具體負(fù)責(zé)類型轉(zhuǎn)換時(shí)的配置,這里配置了對應(yīng)的type.TypeSelfAction,以及成功后的跳轉(zhuǎn)頁面type_self_success.jsp和程序出錯(cuò)時(shí)

  的跳轉(zhuǎn)頁面type_self.jsp,并將消息回顯.

  type_self.jsp

  復(fù)制代碼

  <%@ page language="java" contentType="text/html; charset=UTF-8"

  pageEncoding="UTF-8"%>

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

  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

  <title>Insert title here</title>

  </head>

  <body>

  <s:form action="TypeSelfAction" type="POST">

  <s:textfield label="用戶名" name="username" />

  <s:password label="密碼" name="password" />

  <s:textfield label="薪水" name="salary" />

  <s:textfield label="生日" name="birthday"/>

  <s:textfield label="地址" name="address"/>

  <s:submit value="提交" name="submit"/>

  <s:reset value="重置"/>

  </s:form>

  </body>

  </html>

  復(fù)制代碼

  注:type_self.jsp 是用戶訪問項(xiàng)目的入口,效果圖如下所示:

  其中使用POST請求方式是為了避免中文亂碼等問題,使用struts自帶的標(biāo)簽,如s:password,s:textfield等是為了簡化開發(fā),并且使錯(cuò)誤消息方便回顯.

  TypeSelfAction.java

  View Code

  注:TypeSelfAction是一個(gè)與配置文件type_struts.xml相對應(yīng)的JavaBean文件.

  Address.java

  View Code

  注:Address是關(guān)于地址的JavaBean,其分為省份,市,區(qū)域三級.

  為了實(shí)現(xiàn)自定義類型轉(zhuǎn)換還必須實(shí)現(xiàn)StrutsTypeConverter的擴(kuò)展,這里要手動寫兩個(gè)方法將JavaBean轉(zhuǎn)為String和將String轉(zhuǎn)為JavaBean.

  TypeAddressConverter.java

  復(fù)制代碼

  package type;

  import java.util.Map;

  import org.apache.struts2.util.StrutsTypeConverter;

  /**

  * @ClassName: TypeAddressConverter

  * @Description: 自定義類型轉(zhuǎn)換器,繼承自StrutsTypeConverter,可以將String轉(zhuǎn)換成任意javaBean對象

  * @author: amosli

  * @email:amosli@infomorrow.com

  * @date Feb 13, 2014 11:42:42 PM

  */

  public class TypeAddressConverter extends StrutsTypeConverter {

  public TypeAddressConverter() {

  System.out.println("constructor!");

  }

  //將String轉(zhuǎn)為對象返回

  public Object convertFromString(Map context, String[] values, Class toClass) {

  System.out.println("convertFromString");

  // System.out.println("context:"+context);

  // System.out.println("class:"+toClass);

  // System.out.println("values:"+Arrays.toString(values));

  if (Address.class == toClass) {// 判斷類型是否為將要轉(zhuǎn)成的JavaBean

  String[] split = values[0].toString().split("-");//頁面中的字符串,下標(biāo)為0表示第一個(gè)字符串,這里如果有多個(gè)可以依此類推.

  String province = split[0];// 省份

  String city = split[1];// 市

  String area = split[2];// 區(qū)

  Address address = new Address(province, city, area);

  return address;

  }

  return null;

  }

  //將對象轉(zhuǎn)為String返回

  public String convertToString(Map context, Object o) {

  System.out.println("convertToString");

  if (o instanceof Address) {// 判斷對象類型是否為Adress

  Address adr = (Address) o;

  return adr.toString();

  }

  return null;

  }

  }

  復(fù)制代碼

  注:這里是自定義類型轉(zhuǎn)換的核心代碼,即如何將一個(gè)JavaBean轉(zhuǎn)為String和將String轉(zhuǎn)為JavaBean.

  為了調(diào)用上面的方法還必須加一個(gè)配置.

  xwork-conversion.properties

  #JavaBean=self defined typeconverter

  type.Address=type.TypeAddressConverter


想要了解更多詳情歡迎來電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。

大荔县| 绥芬河市| 瑞昌市| 林芝县| 临澧县| 石嘴山市| 淮安市| 苏州市| 佳木斯市| 建湖县| 阆中市| 沾化县| 浦县| 西乡县| 武乡县| 杭锦旗| 准格尔旗| 临沭县| 咸丰县| 武宣县| 同仁县| 扎赉特旗| 综艺| 揭西县| 中宁县| 灵台县| 丰都县| 左权县| 离岛区| 五华县| 鄄城县| 交口县| 元阳县| 双峰县| 喀喇沁旗| 沁水县| 旅游| 兴山县| 平利县| 富民县| 商水县|