在 Extjs 5 中,当代理类型为 rest 时,erase() 无法与 destroy api 相关联
In Extjs5, erase() can't relate to destory api when the proxy type is rest
这是我的 viewController:
onRestDeleteClick: 函数(){
var ouType = Ext.create('MyApp.model.OuType',
{
id: 49,
ouTypeName: 'Lenlee',
entityName: 'Lenlee'
});
ouType.erase();
}
数据库中存在id为49的模型
这是 OuType 模型:
Ext.define('MyApp.model.OuType', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.field.Field'
],
fields: [
{
name:'id'
},
{
name: 'ouTypeName'
},
{
name: 'entityName'
}
],
proxy:{
type: 'rest',
api: {
read: 'role/read',
update: 'role/update',
create: 'role/create',
destory: 'role/destory'
}
}
});
这是我的服务器class:
@RequestMapping("/role")
@Controller("sysRoleContro")
public class SysRoleController {
…………
…………
@RequestMapping(value="/destory/{id}")
public void destoryOuType(HttpServletRequest request,
HttpServletResponse response, @PathVariable("id") Long id){
log.info("destory");
ouTypeRepository.delete(id);
log.info("end");
}
………
……
}
现在当我点击删除按钮时,请求 url 是:http://localhost:7080/MyApp.model.OuType/49 404 Not Found。
预期的 url 是 http://localhost:7080/CSQMS/role/destory/49
如何删除模型?
Rest 代理的特殊之处在于它不会像您在 api 中设置的那样对 url 进行 CRUD 操作,而是对 HTTP 动词:GET、POST、PUT、DELETE 等进行 CRUD 操作。所以api
配置很可能被忽略。以这种方式配置代理:
proxy:{
type:'rest',
url:'/CSQMS/role'
}
如果您的服务器期望 CRUD 操作动词是 URL 的一部分,您可能需要不同的代理或者您需要实施 buildUrl
方法。
我想说我太粗心了,我应该写'destroy'而不是'destory'。我的天啊
这是我的 viewController:
onRestDeleteClick: 函数(){
var ouType = Ext.create('MyApp.model.OuType',
{
id: 49,
ouTypeName: 'Lenlee',
entityName: 'Lenlee'
});
ouType.erase();
}
数据库中存在id为49的模型
这是 OuType 模型:
Ext.define('MyApp.model.OuType', {
extend: 'Ext.data.Model',
requires: [
'Ext.data.field.Field'
],
fields: [
{
name:'id'
},
{
name: 'ouTypeName'
},
{
name: 'entityName'
}
],
proxy:{
type: 'rest',
api: {
read: 'role/read',
update: 'role/update',
create: 'role/create',
destory: 'role/destory'
}
}
});
这是我的服务器class:
@RequestMapping("/role")
@Controller("sysRoleContro")
public class SysRoleController {
…………
…………
@RequestMapping(value="/destory/{id}")
public void destoryOuType(HttpServletRequest request,
HttpServletResponse response, @PathVariable("id") Long id){
log.info("destory");
ouTypeRepository.delete(id);
log.info("end");
}
………
……
}
现在当我点击删除按钮时,请求 url 是:http://localhost:7080/MyApp.model.OuType/49 404 Not Found。
预期的 url 是 http://localhost:7080/CSQMS/role/destory/49
如何删除模型?
Rest 代理的特殊之处在于它不会像您在 api 中设置的那样对 url 进行 CRUD 操作,而是对 HTTP 动词:GET、POST、PUT、DELETE 等进行 CRUD 操作。所以api
配置很可能被忽略。以这种方式配置代理:
proxy:{
type:'rest',
url:'/CSQMS/role'
}
如果您的服务器期望 CRUD 操作动词是 URL 的一部分,您可能需要不同的代理或者您需要实施 buildUrl
方法。
我想说我太粗心了,我应该写'destroy'而不是'destory'。我的天啊