Struts2自定义转换器输入生日日期输出年、月、日、年龄

时间:2023-03-09 00:52:00
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>