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 の問題でしょうか?