一 视图
1 input.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>类型转换的错误处理</title>
<s:head/>
</head>
<body>
<s:fielderror />
<h2>类型转换的错误处理</h2>
<p><b>请输入用户信息</b></p>
<s:form action="login">
<s:textfield name="user.name" label="用户名"/>
<s:textfield name="user.age" label="年龄"/>
<s:textfield name="user.birth" label="生日"/>
<tr>
<td colspan="2"><s:submit value="转换" theme="simple"/>
<s:reset value="重填" theme="simple"/></td>
</tr>
</s:form>
</body>
</html>
2 welcome.jsp
<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>转换成功</title>
</head>
<body>
用户名:<s:property value="user.name"/><br/>
年龄:<s:property value="user.age"/><br/>
生日:<s:property value="user.birth"/><br/>
</body>
</html>
二 配置文件
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.custom.i18n.resources" value="mess"/>
<constant name="struts.i18n.encoding" value="GBK"/>
<package name="lee" extends="struts-default">
<!-- 定义处理用户请求的Action -->
<action name="login" class="org.crazyit.app.action.LoginAction">
<!-- 配置名为input的逻辑视图,当转换失败后转入该逻辑视图 -->
<result name="input">/WEB-INF/content/input.jsp</result>
<!-- 配置名为success的逻辑视图 -->
<result>/WEB-INF/content/welcome.jsp</result>
<result name="error">/WEB-INF/content/welcome.jsp</result>
</action>
<action name="*">
<result>/WEB-INF/content/{1}.jsp</result>
</action>
</package>
</struts>
三 资源文件
xwork.default.invalid.fieldvalue={0}字段无效
四 action
package org.crazyit.app.action;
import com.opensymphony.xwork2.ActionSupport;
import org.crazyit.app.domain.*;
public class LoginAction extends ActionSupport
{
private User user;
// user的setter和getter方法
public void setUser(User user)
{
this.user = user;
}
public User getUser()
{
return user;
}
// 没有execute方法,直接使用ActionSupport的execute方法
}
对应属性文件
invalid.fieldvalue.user.birth=生日信息必须满足yyyy-MM-dd格式
五 领域模型
package org.crazyit.app.domain;
import java.util.Date;
public class User
{
private String name;
private Integer age;
private Date birth;
// name的setter和getter方法
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return this.name;
}
// age的setter和getter方法
public void setAge(Integer age)
{
this.age = age;
}
public Integer getAge()
{
return this.age;
}
// birth的setter和getter方法
public void setBirth(Date birth)
{
this.birth = birth;
}
public Date getBirth()
{
return this.birth;
}
}
六 测试