0

我正在尝试使用 struts2-json-plugin 来集成 struts 操作和 extjs。我想将 json 从 extjs 发送到 struts2 操作。这个 json 包含我的 bean (UserEntity) 的所有字段。但是动作类的设置器没有调用。这是我的代码:

用户操作.java

public class UserAction extends BaseAction {

      private UserEntity userEntity = new UserEntity();

      public UserEntity getUserEntity() {
           return userEntity;
      }

      public void setUserEntity(UserEntity userEntity) {
           this.userEntity = userEntity;
      }

      ...
}

struts.xml

     <?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="/" extends="struts-default,json-default">

        <action name="saveOrUpdateUserAction" class="ir.emad.action.UserAction" method="saveOrUpdateUser">
            <result name="success" type="json">
                <param name="root">userEntity</param>
            </result>
        </action>

    </package>

</struts>

和我的 UserStore.js

    Ext.define('AM.store.UserStore', {
    extend: 'Ext.data.Store',
    model: 'AM.model.UserModel',
    autoLoad: true,

    proxy: {
        type: 'ajax',
        api: {
            read: 'listAllUsersAction',
            update: 'saveOrUpdateUserAction'
        },
        reader: {
            type: 'json',
            root: 'users',
            successProperty: 'success'
        },
        writer: {
            type: 'json',
            root: 'userEntity',
            successProperty: 'success',
            encode: true
        },
        contentType: 'application/json'

    }
});

我的问题是从未调用过 userEntity 的设置器。如果我将设置器更改为下面的代码,一切都很好。但我想将 json 对象直接设置为 UserEntity bean。

public void setUserEntity(String userEntity){
   ...
}

任何帮助将不胜感激提前谢谢

4

1 回答 1

0

ExtJS 和 Struts 是在不同机器上运行的不同进程。

浏览器是否将正确的信息发送到服务器上的正确 URL?您可以使用 Chrome 开发人员工具检查这一点。

服务器能否接受独立于 ExtJS 的正确 URL 上的正确信息?

于 2013-06-25T19:47:01.190 回答