1. 程式人生 > >Struts2自定義轉換器輸入生日日期輸出年、月、日、年齡

Struts2自定義轉換器輸入生日日期輸出年、月、日、年齡

 

BirthAction.java

package com.action;

import java.util.Calendar;
import java.util.Map;
import com.bean.Birth;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class BirthAction extends ActionSupport {
    private Birth bir;
    
    
public Birth getBir() { return bir; } public void setBir(Birth bir) { this.bir = bir; } public String execute() throws Exception { Calendar cal = Calendar.getInstance(); int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH)+1;
int dayNow = cal.get(Calendar.DAY_OF_MONTH); int yearBirth=Integer.parseInt(bir.getYear()); int monthBirth=Integer.parseInt(bir.getMonth()); int dayBirth=Integer.parseInt(bir.getDay()); int age=yearNow-yearBirth; if(monthNow<=monthBirth){
if(monthNow == monthBirth){ if (dayNow < dayBirth) age--; } else{ age--; } } Map session = ActionContext.getContext().getSession(); session.put("age", age); return SUCCESS; } }

 

BirthConverter.java:

package com.action;

import java.util.Map;

import org.apache.struts2.util.StrutsTypeConverter;

import com.bean.Birth;

public class BirthConverter extends StrutsTypeConverter {
    @Override
    public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
        Birth bir = new Birth();
        String[] str = arg1[0].split("-");
        bir.setYear(str[0]);
        bir.setMonth(str[1]);
        bir.setDay(str[2]);
        return bir;
    }
    @Override
    public String convertToString(Map arg0, Object arg1) {
        Birth bir = (Birth)arg1;
        return "[" + bir.getYear() + "-" + bir.getMonth() + "-" + bir.getDay() + "]";
    }
}

BirthAction-conversion.properties:

bir=com.action.BirthConverter

  Birth.java:

package com.bean;

public class Birth {
    private String year;
    private String month;
    private String day;
    public String getYear() {
        return year;
    }
    public void setYear(String year) {
        this.year = year;
    }
    public String getMonth() {
        return month;
    }
    public void setMonth(String month) {
        this.month = month;
    }
    public String getDay() {
        return day;
    }
    public void setDay(String day) {
        this.day = day;
    }
    
    
}

 

struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>

    <package name="default" extends="struts-default">
        <action name="myBirth" class="com.action.BirthAction">
            <result name="success">/show.jsp</result>
        </action>
    </package>
    
</struts>    

 

index.jsp

<%@taglib uri="/struts-tags" prefix="s" %>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Date介面</title>
  </head>
  <body>
  
  <s:form action="myBirth" method="post">
    <s:textfield name="bir" label="請輸入生日"></s:textfield>
    <s:submit value="提交"></s:submit>
  </s:form>
  
  </body>
</html>

show.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib  uri="/struts-tags" prefix="s"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Date介面</title>
  </head>
  
  <body>
  生日:<s:property value="bir"/><br>
   年:<s:property value="bir.year"/><br>
   月:<s:property value="bir.month"/><br>
   日:<s:property value="bir.day"/><br>
   年齡:<%=session.getValue("age") %>
  </body>
</html>