Struts2 基本數據類型轉換的例子 詳解析

jopen 11年前發布 | 17K 次閱讀 Struts2 Web框架

對int boolean double等Java基本數據類型,是struts2自帶的類型轉換攔截器自動完成類型轉換的,即"類型轉換"是由系統自動完成的。

最終目錄結構:

Struts2 基本數據類型轉換的例子 詳解析

上源碼:

addMaterial.jsp:

<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- struts2標簽庫調用聲明 -->
<%@taglib prefix="s" uri="/struts-tags"%>
<%@ taglib prefix="sx" uri="/struts-dojo-tags" %>
<html>
    <head>
        <title>添加材料</title>
        <s:head />
        <sx:head />
    </head>
    <body>
        <h3 align="left"> 
            Struts2類型轉換使用范例 
        </h3>
        <!-- 材料輸入表單 -->
            <table>
            <s:form id="materialForm" action="addMaterial">
            <s:textfield name="material.material" label="材料名"></s:textfield>  
            <s:textfield name ="material.bid" label="價格"></s:textfield>
            <s:textfield name ="material.mount" label="庫存量"></s:textfield>
            <sx:datetimepicker name ="material.expireDate" label="過期日期"></sx:datetimepicker>
            <s:submit value="提交"></s:submit>
            </s:form>
            </table>      
    </body>
</html>

注釋:表單form中action="addMaterial",即提交到此action處理,由struts.xml導航。注意傳遞的name為material.xxx。當然,要使material.xxx意義有效,在下面的Action類中必須定義setMaterial()方法實現'注入' 并定義Material類的相應xxx屬性。

struts.xml:

<?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.i18n.encoding" value="GBK"/>                                                                                <package name="Convert" extends="struts-default">  
  <action name="addMaterial"
   class="com.action.AddMaterialAction">
   <result name="input">/jsp/addMaterial.jsp</result>
   <result name="success">/jsp/showMaterial.jsp</result>
  </action>
 </package>
</struts>

注釋:配置文件struts.xml對頁面進行導航,匹配action:"addMaterial",交由Action類:AddMaterialAction.java實際處理,處理后導航到相應的結果頁面。

addMaterialAction.java:

package com.action;

import com.model.Material;
import com.opensymphony.xwork2.ActionSupport;

public class AddMaterialAction extends ActionSupport {
    //屬性類型需要類型轉換的對象
    private Material material;

    public Material getMaterial() {
        return material;
    }

    public void setMaterial(Material material) {
        this.material = material;
    }

    public String execute() throws Exception {
        return SUCCESS;
    }
}

注釋:此Action類處理提交過來的表單數據。如<s:textfield name="material.bid" label="價格"></s:textfield>,如果在表單中填入的數據為"198.8",則是將name="material.bid"value="198.8" 提交給此Action類處理。通過setMaterial(Material material),將材料類Material的實例material的實例屬性bid的值設為"198.8"。
Material.java:

package com.model;
import java.util.Date;

public class Material implements java.io.Serializable {
    // Fields
    private String material;
    private double bid;
    private int mount;
    private Date expireDate;

    public Material() {
    }

    public double getBid() {
        return bid;
    }

    public void setBid(double bid) {
        this.bid = bid;
    }

    public int getMount() {
        return mount;
    }

    public void setMount(int mount) {
        this.mount = mount;
    }

    public String getMaterial() {
        return this.material;
    }

    public void setMaterial(String material) {
        this.material = material;
    }

    public Date getExpireDate() {
        return expireDate;
    }

    public void setExpireDate(Date expireDate) {
        this.expireDate = expireDate;
    }   
}


showMaterial.jsp:

<%@ page language="java" pageEncoding="gb2312"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- struts2標簽庫調用聲明 -->
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
    <head>
        <title>添加材料</title>
        <s:head />
    </head>
    <body>
        <h3 align="left"> 
            Struts2類型轉換使用范例 
        </h3>
        <!-- 材料數據顯示 -->
            <table>            
                材料名: <s:property value="material.material" ></s:property>
                價格:   <s:property value="material.bid" ></s:property>
                庫存量:  <s:property value="material.mount" ></s:property>
                過期日期: <s:property value="material.expireDate" ></s:property>         
            </table>        
    </body>
</html>

注釋:注意value="material.xxx",因為Action類處理的是material實例,此處是通過material實例來訪問其屬性的。

轉換過程:在頁面按"提交"按鈕后,就相當于"setMaterial()"方法。在系統根據struts.xml配置文件執行Action之前,Struts2自帶的類型轉換攔截器就已經將Material對象中幾個屬性變量的類型由頁面上輸入時的String類型轉換為Material對象屬性變量被定義的數據類型。對數據處理完成后,在頁面上顯示數據時,是上述操作的逆過程,即完成數據原來的數據類型轉換為String類型,然后顯示于頁面上。

實際上在開發工作中,除非有根據特殊需求需要類型轉換之外,在Struts2中絕大部分類型轉換都已經由Struts2自己完成。

運行 http://localhost:8080/Convert/jsp/addMaterial.jsp :

Struts2 基本數據類型轉換的例子 詳解析

“提交”后結果:

Struts2 基本數據類型轉換的例子 詳解析

來自:http://blog.csdn.net/itzyjr/article/details/8459782

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!