概述:下面通过jsp提交输入注册信息信息,同时完成过程文件国家化问题演示说明。【注册日期转换用注解方式实现】

工程截图:

注册页面jsp文件:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="tycoon"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- method 默认为:post -->
<tycoon:form action="regist" method="post">
<tycoon:textfield label="用户名" name="username"></tycoon:textfield>
<tycoon:password label="密码" name="password"></tycoon:password>
<tycoon:password label="确认密码" name="repassword"></tycoon:password>
<tycoon:textfield label="生日" name="birthday"></tycoon:textfield>
<tycoon:textfield label="年龄" name="age"></tycoon:textfield>
<tycoon:submit value="登录"></tycoon:submit>
</tycoon:form>
</body>
</html>

success.jsp(成功后跳转页面):

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="tycoon"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>success</title>
</head>
<body>
欢迎,<tycoon:property value="username" />登陆</br>
密码为,<tycoon:property value="password" /></br>
生日,<tycoon:property value="birthday" /></br>
年龄,<tycoon:property value="age" /></br>
</body>
</html>

Regist.java(注册页面action文件):

package com.tycoon.usermanager;

import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.conversion.annotations.TypeConversion; public class RegistAction extends ActionSupport { /**
* 东北大亨
*/
private static final long serialVersionUID = -1245514962211959620L; private String username;
private String password;
private String repassword;
private Date birthday;
private Integer age; public Integer getAge() {
return age;
} public void setAge(Integer age) {
this.age = age;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getRepassword() {
return repassword;
} public void setRepassword(String repassword) {
this.repassword = repassword;
}

     // 注解方式实现注册页面日期类型转换
@TypeConversion(converter="com.tycoon.common.DataConver3")
public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public String execute() throws Exception { System.out.println("调用registAction execute() ");
return SUCCESS;
}
}

日期类型转换类:

package com.tycoon.common;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
/**
* 东北大亨
* @author tycoon
*
*/
public class DataConver3 extends StrutsTypeConverter { private SimpleDateFormat[] sdfs = new SimpleDateFormat[] { new SimpleDateFormat("yyyy-MM-dd"),
new SimpleDateFormat("yyyy年MM月dd日"), new SimpleDateFormat("yyyy/MM/dd") }; @Override
public Object convertFromString(Map context, String[] values, Class arg2) { if (values == null)
return null; Date dt = null;
for (SimpleDateFormat sdf : sdfs) {
try {
dt = sdf.parse(values[0]);
return dt;
} catch (ParseException e) {
continue;
}
} return null;
} @Override
public String convertToString(Map context, Object value) { if (null == value)
return null;
if (value instanceof Date) {
Date df = (Date) value;
System.out.println(" DataConver2 :" + "convertToString");
return sdfs[0].format(df);
}
return null;
}
}

国际化文件key及value值:

(1)message_en_US.properties 文件内容:

xwork.default.invalid.fieldvalue=Invalid field value for field "{0}"

(2)message_zh_CN.properties 文件内容:

xwork.default.invalid.fieldvalue=\u4F60\u8F93\u5165\u7684\u683C\u5F0F\u4E0D\u6B63\u786E

struts.xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- 配置全局国家化资源文件 jsp页面和Action都可以使用 -->
<constant name="struts.custom.i18n.resources" value="message"/>
<package name="default" namespace="/" extends="struts-default">
<action name="regist" class="com.tycoon.usermanager.RegistAction"
method="execute">
<result>/success.jsp</result>
<result name="error">/failure.jsp</result>
<result name="input">/regist.jsp</result>
</action>
</package>
</struts>

演示效果截图:

未实现国际化输入错误值提示错误信息:

实现国际化输入接收的日期类型值图一:

跳转成功后:

最新文章

  1. VS2013 破解
  2. socket网络通信
  3. LeetCode - 120. Triangle
  4. Extjs读取本地下拉选框数据源,分为text和value,显示text,传值value
  5. 运动历史图(MHI)——Motion History Image
  6. java二维码生成与解析代码实现
  7. 如何更好的理解(pageX,pageY,clientX,clientY,eventX,eventY,scrollX,scrollY,screenX,screenY,event.offsetX,event.offsetY,offsetLeft,style.left)
  8. felx基础知识
  9. mvc知识应用
  10. deibian不能加vpn
  11. OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
  12. 大数据与Mapreduce
  13. 基于Windows的git代码统计工具GitStats
  14. golang struct tag
  15. Macaca初体验-PC端(Python)
  16. MySql(十九):基础——自定义存储过程和函数
  17. 《Spring1之第五次站立会议》
  18. bzoj 3473 后缀自动机多字符串的子串处理方法
  19. 关于linux的添加永久静态路由的static-routes方法
  20. linux目录(转载)

热门文章

  1. 关于URL编码 [转]
  2. A Wasserstein Distance[贪心/模拟]
  3. Java I/O系统学习系列一:File和RandomAccessFile
  4. CVPR 2019|PoolNet:基于池化技术的显著性检测 论文解读
  5. 基于Java实现的选择排序算法
  6. Idea下Maven的使用
  7. pair类型
  8. 左手系,右手系,row major, column major
  9. 2016.6.20 eclipse安装完毕后打开失败,显示a JDK or a JRE must be avaliable in order to run Eclispe
  10. 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】