success/error
Backbone.js のメソッドのコールバックについて質問を受けました。私はこれに慣れていないので、私の質問は単純なものに見えるかもしれません。
私が知る限り、save()
またはfetch()
モデルのメソッドが起動するのは、サーバーにエラーsuccess
(例外など)がない場合です。問題は、クライアント側でエラーの種類を取得するために、サーバーで例外をスローする必要があるかどうかです。私が言いたいことの例を挙げましょう:
たとえば、アプリの新しいユーザーを作成する Web 上の UI があります。私のクライアント側は次のようになります。
var userView = Backbone.View.extend({
initialize:function(){ ... },
events: {
'click #sign_up': 'createAccount'
},
createAccount: function() {
login = $('#login').val();
password = $('#password').val();
var user = new User(); // User is a model
user.save({login: login, password: password},{
success: function(data) {
if (data != null) {
alert('success');
} else {
alert('fail');
}
},
error : function() {
alert('error');
}
}
});
したがって、サーバー側は次のようになります。
@Controller
@RequestMapping("/users")
public class UsersController {
@RequestMapping(method = RequestMethod.POST)
public @ResponseBody User createUser(@RequestBody User user) throws Exception {
if (user == null || !user.isValid()) {
return null;// not valid - error message 1
}
if (userDao.getUserByLogin(user.getLogin()) != null) {
return null;// such user already exists! - error message 2
}
userDao.saveUser(user);
return user;
}
私が望むのは、それに応じて適切なエラーメッセージを送信できることです。を返すnull
と、 コールバック内のデータsuccess
は、リクエストを送信する前に入力したばかりのモデルになります。例外をスローすると、それが発生しerror
ます。この時点で、自分のニーズを満たすためにどのようなアプローチをとればよいでしょうか。