struts自动类型转换没有执行

发布于 2022-09-02 00:14:38 字数 3185 浏览 9 评论 0

准备测试一下自动类型转换的例子,比如说用户输入“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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文