Struts2处理类型转换错误下

一 视图

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;
    }

}

六 测试

Struts2处理类型转换错误下

Struts2处理类型转换错误下

上一篇:Struts2的输入校验实战


下一篇:Struts2非字段校验器配置风格