Iniciei a pouco tempo com o Vraptor e agora travei numa questão.
Usei o jqGrid pra mostrar dados e preciso salvar o que for alterado.
Com o jQuery transformo os dados do grid no formato JSON mais ou menos
assim:
[{“habilitado”:false,“centroDeCustos.codigo”:
1,“centroDeCustos.nome”:“SEDE ADMINISTRATIVA”,“id”:1},
{“habilitado”:true,“centroDeCustos.codigo”:
2,“centroDeCustos.nome”:“FABRICA RAÇÃO - CASCAVEL”,“id”:2},
{“habilitado”:true,“centroDeCustos.codigo”:
8,“centroDeCustos.nome”:"FILIAL COMERCIAL - PORTO ALEGRE ",“id”:
3},{“habilitado”:false,“centroDeCustos.codigo”:
9,“centroDeCustos.nome”:“FILIAL COMERCIAL - COLOMBO”,“id”:4},
{“habilitado”:false,“centroDeCustos.codigo”:
10,“centroDeCustos.nome”:“INCUBATORIO OVOS - REALEZA”,“id”:5},
{“habilitado”:true,“centroDeCustos.codigo”:
11,“centroDeCustos.nome”:“INDUSTRIA FARELO E OLEO - CVEL”,“id”:6}]
daí no Controller:
@Post
@Path("usuario/ccustos/salvar")
@Consumes
public void gravarListaCCcustos(List<HabilitacaoCentroCusto>
listaCcustos) {
// implementação
result.redirectTo(this).formulario();
}
No inicio ele dava um erro que tinha que ter no JSON alguma coisa do
tipo {list :[{“habilitado”:true, … etc
Fiz isso e após isso ele começou a dar erro por não saber o que é
habilitado
O “habilitado” não é um campo, apenas uma marcação que foi serializado
pro JSON no grid pro usuário selecionar ou não…
O método que gera pro jqGrid é esse:
@Get
@Path("usuario/listasccustos.json")
public void buscaListaCcustos(int matricula) {
this.result.use(json()).withoutRoot()
.from(habCcusto.montaListaCCFormatoGrid(matricula)).include("rows")
.include("rows.centroDeCustos").serialize();
}
o médoto montaListaCCFormatoGrid e verificaCentroCustosHabilitados na
classe HabilitacaoCentroCusto
public HabilitacaoCentroCusto montaListaCCFormatoGrid(int codigo) {
buscaListaCentroCustos();
verificaCentroCustosHabilitados(codigo);
this.page = 1;
this.total = (this.rows.size() / 10) + 1;
this.records = this.rows.size();
return this;
}
private void verificaCentroCustosHabilitados(int codigo) {
Funcionario funcionario = funcionarioDAO.pegaPorId(codigo);
List<CentroDeCustos> centroDeCustosHabilitados =
funcionario.getListaCentroDeCustos();
for (ListaCentroCusto listaCentroCusto : this.rows) {
if
(centroDeCustosHabilitados.contains(listaCentroCusto.getCentroDeCustos()))
{
listaCentroCusto.habilitado = true;
}
}
}
Mais ou menos é isso… Pergunto, o que devo fazer?
Agradeço desde já…
Ricardo