首页 > struts自动类型转换没有执行

struts自动类型转换没有执行

准备测试一下自动类型转换的例子,比如说用户输入“abc,123”,那么就像abc转换为User对象的name字段,123转换为User对象的pass字段。但测试的过程中,发现我的Action的execute方法都没有走,直接输出了配置的input页面。类型转换器的方法也没有走。控制台也没有报错。
目录结构是这样的:

struts配置文件:

<?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>

    <package name="default" namespace="/content" extends="struts-default">
        <action name="show">
            <result>/content/convertLogin.jsp</result>
        </action>
        <action name="login" class="com.zuobiao.convert.LoginAction">
            <result>/WEB-INF/content/convert/welcome.jsp</result>
            <result name="error">/WEB-INF/content/error.jsp</result>
            <result name="input">/WEB-INF/content/convert/input.jsp</result>
        </action>
    </package>
</struts>

convertLogin.jsp代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
</head>
<body>
    <form action="login">
        用户名:<s:textfield name="user" value=""></s:textfield>
        <s:submit value="提交"></s:submit>
    </form>
</body>
</html>

LoginAction的代码:

public class LoginAction extends ActionSupport {
    private User user;

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String execute() throws Exception {
        if (getUser().getName().equals("abc")&&getUser().getPass().equals("123")){
            return SUCCESS;
        }else {
            return ERROR;
        }
    }
}

User一个javabean对象:

public class User {
    private String name;
    private String pass;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }
}

转换器类:

public class UserConverter extends DefaultTypeConverter {
    @Override
    public Object convertValue(Map context, Object value, Class toType) {
        if (toType == User.class){
            String[] params = (String[]) value;
            User user = new User();
            String[] userValues = params[0].split(",");
            user.setName(userValues[0]);
            user.setPass(userValues[1]);
            return user;
        }else if (toType == String.class){
            User user = (User)value;
            return "用户名是:"+user.getName()+"---用户名密码是:"+user.getPass();
        }
        return null;
    }
}

LoginAction-conversion.properties内容:

user=com.zuobiao.convert.UserConverter
【热门文章】
【热门文章】