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',
        }
    },
.....

そして、リーダーとライターに異なるURLを使用することは可能だろうかと思っていました。

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。リーダーとライターは単なるデコーダーとエンコーダーであるため、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'
        }
    }
}

代わりに、安静な実装を引き続き使用する場合は、サーバー側 API を変更して、create、read、update、および destroy メソッドをそれぞれPOSTGETPUT、およびにマップする必要がありDELETEます。例:

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