天天看點

day29Struts 類型轉換和自定義類型轉換,input視圖

<?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" namespace="/type" extends="struts-default">
          <!-- 傳回視圖 -->
                   <action name="type" class="star.july.b_type.TypeAction" method="type">
                             <result name="success">/index.jsp</result>
                             <!-- 定義錯誤視圖 -->
                             <result name="input">/add.jsp</result>
                   </action>
                   
          </package>
 
</struts>
           

建立實體類:

package star.july.b_type;

import java.util.Date;

public class Student {
          //不同的類型,輸出時會相應的類型
          private String name;
          private int age;
          private double grade;
          private Date birth;
          public String getName() {
                   return name;
          }
          public void setName(String name) {
                   this.name = name;
          }
          public int getAge() {
                   return age;
          }
          public void setAge(int age) {
                   this.age = age;
          }
          public double getGrade() {
                   return grade;
          }
          public void setGrade(double grade) {
                   this.grade = grade;
          }
          public Date getBirth() {
                   return birth;
          }
          public void setBirth(Date birth) {
                   this.birth = birth;
          }
          @Override
          public String toString() {
                   return "Student [name=" + name + ", age=" + age + ", grade=" + grade
                                      + ", birth=" + birth + "]";
          }

}

自定義類型轉換器:

package star.july.b_type;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

//自定義類型轉換器
public class MyDateConverter extends       StrutsTypeConverter{
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd");
          //頁面(String)->Action(自己的類型)
          //values:頁面傳入的字元串
          //toClass:目前javabean屬性類型,java.util.Date
          @Override
          public Object convertFromString(Map context, String[] values, Class toClass) {
                   //轉換日期類型
                   //将1994/11/02 轉為符合的格式
                   try {
                             //如果是Date類型才需要轉換
                             if(toClass==java.util.Date.class){
                                      String str = values[0];
                                      //轉換成Date類型
                                      Date date = sdf.parse(str);
                                      return date;
                             }
                             return null;
                   } catch (ParseException e) {
                             e.printStackTrace();
                             throw new RuntimeException(e);
                   }
          }

          //Action->轉換為String
          @Override
          public String convertToString(Map arg0, Object arg1) {
                   // TODO Auto-generated method stub
                   return null;
          }

}
           

TypeAction:

package star.july.b_type;

import com.opensymphony.xwork2.ActionSupport;

public class TypeAction extends ActionSupport{
          //建立一個對象
          Student student;

          public Student getStudent() {
                   return student;
          }

          public void setStudent(Student student) {
                   this.student = student;
          }

          public String type(){
                   //攔截器自動轉換類型
                   //類型與Student.java實體類中的類型相呼應
                   //輸出結果:Student [name=趙甲第, age=22, grade=150.0, birth=Wed Dec 07 00:00:00 CST 1994]
                   System.out.println(student);
                   return SUCCESS;
          }
}
           

定義TypeAction-conversion.properties檔案 檔案名是由:相關聯的類型的類名+“-conversion.properties”

student.birth=gz.itcast.b_type.MyDateConverter

jsp頁面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="/struts-tags"  prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>類型轉換</title>

	1.    

          <meta http-equiv="pragma" content="no-cache">
          <meta http-equiv="cache-control" content="no-cache">
          <meta http-equiv="expires" content="0">
          <!--
          <link rel="stylesheet" type="text/css" href="styles.css" target="_blank" rel="external nofollow" >
          -->
  </head>
  <!-- 傳回input視圖傳來的錯誤資訊 -->
  <s:fielderror></s:fielderror>
  <body>
    <form action="<c:url value='/type/type'/>"  method="post">
          姓名:<input type="text" name="student.name"/><br>
          年齡:<input type="text" name="student.age"/><br>
          成績:<input type="text" name="student.grade"/><br>
          日期:<input type="text" name="student.birth"/><br>
          <input type="submit" value="送出"/>
    </form>
  </body>
</html>
           

局部引用: 對某個Action起作用 在Action類的同目錄下,建立一個檔案:叫 Action類名-conversion.properties(TypeAction-cnversion.properties)

student.birth=star.july.b_type.MyDateConverter

全局引用:對整個網站的所有Action起作用 在項目的src下面,建立一個檔案:   xwork-conversion.properties

java.util.Date= star.july .b_type.MyDateConverter

繼續閱讀