1

我正在创建一个使用 Spring 3、EXTJS 4、hibernate 3 的简单项目,我想创建一个从数据库中提取数据的 ext 表单,您可以添加、删除和更新此信息。我已经填写了表格,现在我想弄清楚如何在表格中更新客户。

做这个的最好方式是什么?我想做的是为作者使用与阅读器不同的 url,以便它可以将客户对象传递回我的 java 类以更新数据库

这是我目前填充表单的方式

Ext.onReady(function(){

var store = Ext.create('Ext.data.Store', {
    autoLoad: true,
    autoSync: true,
    model: 'Person',
    proxy: {
        type: 'rest',
        url: 'http://localhost:8080/helloworld/service/web',
        reader: {
            type: 'json' 
        },
        writer: {
            type: 'json',
        }
    },
.....

我想知道是否可以像这样为读者和作者使用不同的网址

Ext.onReady(function(){

var store = Ext.create('Ext.data.Store', {
    autoLoad: true,
    autoSync: true,
    model: 'Person',
    proxy: {
        type: 'rest',

        reader: {
            type: 'json',
            url: 'http://localhost:8080/helloworld/service/web'
        },
        writer: {
            type: 'json',
            url: 'http://localhost:8080/helloworld/service/web/update'
        }
    },
......

这些是我用来填充表单和更新客户的方法

@Controller
@RequestMapping("/web")  
public class Web {

@Autowired
private CustomerService customerService;

@RequestMapping(method=RequestMethod.GET)
public @ResponseBody List<Customer> getCustomers() {
    List<Customer> list = customerService.returnAllCustomers();
    return list;
}

@RequestMapping(value="/update", method=RequestMethod.GET)
public @ResponseBody void updateCustomers(Customer customer) {
    customerService.saveCustomer(customer);
}
......

谢谢

4

1 回答 1

3

如果你想有单独的 URL,你可以切换到使用AjaxProxy. Readers 和 Writers 不应配置 URL,因为它们只是解码器和编码器。这是一个例子:

var store = Ext.create('Ext.data.Store', {
    autoLoad: true,
    autoSync: true,
    model: 'Person',
    proxy: {
        type: 'ajax',
        api: {
            create  : 'http://localhost:8080/helloworld/service/web/create',
            read    : 'http://localhost:8080/helloworld/service/web',
            update  : 'http://localhost:8080/helloworld/service/web/update',
            destroy : 'http://localhost:8080/helloworld/service/web/delete'
        }
        reader: {
            type: 'json'
        },
        writer: {
            type: 'json'
        }
    }
}

相反,如果您想继续使用 restful 实现,则需要更改服务器端 API 以将 create、read、update 和 destroy 方法分别映射到POSTGETPUTDELETE。例子:

@RequestMapping(method=RequestMethod.PUT)
public @ResponseBody void updateCustomers(Customer customer) {
    customerService.saveCustomer(customer);
}
于 2012-04-18T23:00:07.717 回答