クライアント側で model.save() を実行すると、Spring フレームワーク コントローラーで null 値が取得されます。Jquery ajaxSubmit() を使用すると、値が正常に受信されます。model.save() を使用して同じことを達成する方法
クライアント側コードでのログイン モデルとビュー (バックボーンを使用)
$.ready = function() {
var LoginModel, LoginView;
// Login Model
LoginModel = Backbone.Model.extend({
// URL to authenticate login.
url: 'authenticate',
// Ensure that each todo created has `title`.
initialize: function() {
console.log("LoginModel initialized");
this.bind("change", this.attributesChanged);
},
validate: function(attrs) {
console.log("LoginModel validate");
},
attributesChanged: function(){
console.log("LoginModel attributesChanged");
}
});
// Login View
LoginView = Backbone.View.extend({
el: $('#loginform'),
events: {
"click #login-button": "performLogin",
"change #login-username": "setUsername",
"change #login-password": "setPassword"
},
initialize: function() {
this.username = $("#login-username");
this.password = $("#login-password");
this.loginButton = $("#login-button");
},
setUsername: function(e){
this.model.set({username: this.username.val()});
console.log("LoginView username set = " + this.username.val());
},
setPassword: function(e){
this.model.set({password: this.password.val()});
console.log("LoginView password set = " + this.password.val());
},
performLogin: function(event) {
event.preventDefault();
this.model.save();
return false;
}
});
var loginview = new LoginView({model: new LoginModel()});
}
HTMLフォーム
<form id="loginform" action="authenticate" method="POST">
<div>
User Name
<input name="username" type="text" align="right" id="login-username">
<br/>
<br/>
Password
<input name="password" type="password" align="right" id="login-password">
</div>
<button type="submit" id="login-button">Login</button>
</form>
$.ajaxForm で動作するスクリプト タグ
$('#loginform').submit(function() {
$(this).ajaxSubmit();
return false;
});