Jquery ajax将用户定义的对象发布到Strut2操作

Jquery ajax将用户定义的对象发布到Strut2操作,jquery,ajax,struts2,Jquery,Ajax,Struts2,我试图将用户定义的对象发布到struts2的操作中,但我的操作中的对象仍然为null。有人能帮我吗?谢谢你的帮助 User.java public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String user

我试图将用户定义的对象发布到struts2的操作中,但我的操作中的对象仍然为null。有人能帮我吗?谢谢你的帮助

User.java

public class User {
    private String username;
    private String password;

    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;
    }
}
这是我的行动 Login.java

public class Login extends ActionSupport {
    private User user;

    @Override
    public String execute() throws Exception {
        System.out.println(user.getUsername() + " - " + user.getPassword());
        return "success";
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }
}
jsp页面中的我的ajax调用:

    $(function() {
        var user = {'user.username': 'abc', 'user.password' : '123'};
        //var user = {username: 'abc', password : '123'};
        $.ajax({
            type : 'POST',
            url : 'login',
            data : JSON.stringify(user),
            //data: user,
            contentType : 'application/json',
            success : function(result) {
                alert("hh");
            }
        });
    });
struts.xml

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="struts2jquery" extends="struts-default, json-default">
        <action name="login" class="com.myapp.action.Login">
            <result name="success">result.jsp</result>
        </action>
    </package>
</struts>

result.jsp

最后,我解决了它:D.只需删除ajax调用中的行
contentType:“application/json”
。 现在的ajax调用是:

        var u = {'user.username': 'abc', 'user.password' : '123'};
        $.ajax({
            type : 'POST',
            url : 'login',
            data: u,
            //contentType: "application/json",
            success : function(result) {
                //alert("hh");
            }
        });

谢谢大家:D

+1,拼写和格式都很好,有所有相关的部分,周围没有噪音,你开始的很好。。。顺便说一句,我发现奇怪的是,您正在执行一个AJAX调用(在完成其业务后应该保持在同一页面中),然后返回一个JSP文件。您可能希望返回一个JSON结果,将其解析到页面中,然后执行重定向或类似操作。。。AJAX调用返回的结果不能改变整个页面,这是标准调用的业务…感谢您的建议。我将返回一个JSON结果,但struts操作中没有我的post数据,所以我只返回一个jsp页面用于测试^^。什么?返回用于测试的json…:)并在每个setter(操作中的用户对象的setter,以及用户对象内部)中放置一个日志行,以查看发生了什么。是的,我想知道为什么struts无法将我的post数据映射到操作中的对象,而如果我使用struts标记,一切都可以正常工作。我正试图调试到struts框架中,但似乎很复杂@要在Eclipse中调试,请运行调试配置->远程Java应用程序,设置主机和调试端口(您的应用程序服务器必须在启用调试模式的情况下运行),然后按调试。然后设置断点并使用WebApp