自定义类型转换器实例---生日输入输出

来源:互联网 发布:苏州掌柜软件 编辑:程序博客网 时间:2024/05/18 02:02

在网页date.jsp中提供一个文本框和提交按钮,按照“年-月-日”的形式提交生日,例如:1995-11-10,自定义一个转换器,在网页show.jsp中分别输出年、月、日,并根据当前系统日期显示年龄(实岁),例如:如果当前日期为2015年11月1日,则显示19岁;如果当前日期为2015年11月11日,则显示20岁。


index.jsp

 <s:form action="myBirthday" method="post"><s:textfield name="bir" label="请输入出生日期(XXXX-XX-XX)"></s:textfield><s:submit value="提交"></s:submit></s:form>


success.jsp

  <body>    <s:property value="bir"/><br>   年: <s:property value="bir.year"/><br>   月:<s:property value="bir.month"/><br>   日:<s:property value="bir.day"/><br> <br> 年龄:<%=session.getValue("age") %>  </body>



Javabean

public class Birthday {private String year;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;}private String month;private String day;}



Action

public class LoginAction extends ActionSupport{private Birthday bir;public Birthday getBir() {return bir;}public void setBir(Birthday 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; //因为Java规定起始时间为1900-0-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--;}}ActionContext actionContext = ActionContext.getContext();    Map session = actionContext.getSession();    session.put("age", age);return "success";}}



converter

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




注册器:

bir=com.adam.test.converter.MyTypeConverter



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="myBirthday" class="com.adam.test.action.LoginAction"><result name="success">/success.jsp</result></action></package></struts>







1 0
原创粉丝点击