Bom tenho um projeto com um crud usando Vraptor3.5 e Extjs 4.2.
Controller Vraptor
@Resource
public class UsersController {
private final Result result;
private final UserDao dao;
public UsersController(UserDao dao, Result result) {
this.result = result;
this.dao = dao;
}
@Get
public void list(Integer start, Integer limit) {
try {
result.use(ExtJSJson.class).from(dao.list(start, limit))
.total(new Long(dao.rowsCount().toString()).intValue())
.success().serialize();
}
@Post
@Consumes("application/json")
public void save(User data) {
dao.save(data);
result.use(ExtJSJson.class).from(data).success().serialize();
}
@Put
@Consumes("application/json")
public void update(User data) {
dao.update(data);
result.use(ExtJSJson.class).from(data).success().serialize();
}
@Delete
@Consumes("application/json")
public void delete(User data) {
dao.delete(data);
result.use(ExtJSJson.class).from(data).success().serialize();
}
}
Store Extjs
Ext.define('AM.store.Users', {
extend : 'Ext.data.Store',
model : 'AM.model.User',
autoLoad: {start: 1, limit: 20},
pageSize : 20,
// autoSync: true,
proxy : {
type : 'ajax',
api : {
read : 'users/list',
create : 'users/save',
update : 'users/update',
destroy : 'users/delete'
},
actionMethods: {
read: 'get',
create : 'post',
update : 'put',
destroy : 'delete'
},
reader : {
type : 'json',
root : 'data',
successProperty : 'success',
totalProperty : 'total'
},
writer : {
type : 'json',
root : 'data',
writeAllFields : true,
encode : false
}
}
});
Usei o projeto da Loiane pelo JavaCE 2012 como exemplo, https://github.com/loiane/javace-conference-2012
até aí tudo bem consegui fazer o crud funcionar.
Minha dúvida, é possível implementar um método que receberia uma lista de ‘User’,
para por exemplo excluir varios registros em uma unica operação?
Quando tento usar o metodo delete existente, o json que enviado pro servidor tem o seguinte padrão, e acaba excluindo somente o ultimo registro:
{"data":
[
{"id":184,"name":"asdas","email":"as@ema.vom"},
{"id":180,"name":"teste","email":"teste@email.com"},
{"id":173,"name":"User","email":"user4@u.com"}
]
}