0

Spring 3.1 コントローラーで Ext-JS 4.1 を使用する。

load() メソッドを使用して Spring Controller からオブジェクトを取得しようとしています。テキスト フィールドから文字列を読み取り、それを load メソッドに送信します。文字列フィールドには、「company.server.com」などの完全修飾サーバー名が含まれます。何が起こっているかというと、Spring コントローラー内の値は「company.server」です。つまり、「.com」が削除されます。「company.server.com」のように末尾に追加のピリオドを入れます。次に、「company.server.com」として適切に表示されます。何らかのトークン化が行われているようです。何が起こるかを確認するために、コンマ (,) を使用しました。コンマを使用すると、期待どおりに文字列が入りました。何らかの理由でピリオド (.) が問題を引き起こしています。

モデルは次のとおりです。

Ext.define('AB.model.Server', {
    extend: 'Ext.data.Model',
    fields: [
        {name:'serverName', type:'String'},
        {name:'memory', type:'String'},
        {name:'cpus', type:'int'}
    ],

    proxy {
        type: 'rest',
        url: '/web/user/'
    }
});

以下は、load() 呼び出しを行うフォームのスニペットです。

Ext.define('AB.view.Form', {
    extend: 'Ext.form.Panel',

    ....

    ,{
        xtype: 'button',
        text: 'Retrieve Information',
        handler: function() {
           Ext.ModelManager.getModel('AB.model.User').load(Ext.getCmp('serverName').getValue(), {
               success: function(user) {
                   alert("Success");
        }

    ....
}

Firebug を使用すると、これが呼び出されている URL として表示されます。

http://myServer/web/user/company.server.com?_dc=13461612333647?id=company.server.com

したがって、URL には正しいサーバー名がありますが、Spring Controller 側では、パラメーターの値は「company.server」です。

次の URL を Web ブラウザに直接入力すると、次のようになります。

http://myServer/web/user/company.server.com/

Spring Controllerのパラメータが「company.server.com」であると正しく動作します。

これは EXT JS の問題ですか? EXT JS から Spring に問題がありますか? ブラウザで直接 URL が正しく機能するため、Spring だけの問題ではないと思います。

アップデート:

次の URL を Web ブラウザに直接入力すると、次のようになります。

http://myServer/web/user/company.server.com

EXT JS Rest 呼び出しと同じように動作します。末尾にスラッシュ (/) がないことに注意してください。多分これは春の問題ですか?それとも web.xml の問題でしょうか?

4

0 に答える 0