【发布时间】:2013-02-07 22:17:05
【问题描述】:
我有一个关于 Backbone.js 中方法的 success/error 回调的问题。由于我是新手,所以我的问题可能看起来很简单或类似。
据我所知,如果服务器上没有错误(比如异常),模型的save() 或fetch() 方法会触发success。问题是,我应该在服务器上抛出异常以便在客户端获取错误类型吗?让我举个例子来说明我的意思:
例如,我在网络上有一个 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 回调中的data 将是我在发送请求之前刚刚填充的模型。如果我抛出一个异常,那么它将触发error。在这一点上,我应该采取什么方法来满足我的需求。
【问题讨论】:
标签: javascript java spring backbone.js