Como assim? Bom, primeiro de tudo, olá =)
Tenho a tabela que lista os usuários, implementada na funcionalidade 3. Adicionei os campos pedidos para a funcionalidade 4 e um deles é um botão para adicionar para a página de edição de roles. Eu consigo ir para a página de roles (inclusive, tenho outro problema lá, como descrito aqui). Meu problema é: quando eu chamo o nome do usuário na página de edição de roles, quem aparece é o Admin, independente de qual usuário eu tenha chamado pelo botão de edição. Eu sei que os dados que estão sendo enviados estão corretos, afinal o email que aparece na URL é o correto e quando eu tento imprimir no console, aparece os valores corretos também.
@RequestMapping(value = "/editar", method = RequestMethod.POST)
public ModelAndView editarForm(@RequestParam String email) {
ModelAndView mav = new ModelAndView("/usuarios/editar");
Usuario usuario = usuarioDao.loadUserByUsername(email);
mav.addObject("usuario", usuario);
mav.addObject("roles", usuario.getRoles());
List<Role> listaRoles = roleDao.listar();
mav.addObject("listaRoles", listaRoles);
return mav;
}
<form:form action="${s:mvcUrl('UC#editarForm').arg(0, usuario.email).build() }" method="POST">
<input type="image" src="${resPath}/imagens/editar.png" alt="Editar" title="Editar"/>
</form:form>
Como é possível ver, na classe UsuarioController, eu atribuo os parâmetros aos nomes corretamente e devolvo o objeto ModelAndView para que eu consiga recuperar esses dados depois.
Mas quando eu chamo o ${usuario.nome} na página de edição dos roles, eu recupero o nome do Admin sempre. E esse é o de menos. Se eu tento mexer nos roles de um outro usuário, ele vai atualizar os roles do Admin também.
<form:form servletRelativeAction="${s:mvcUrl('UC#atualizar').arg(0, usuario.email).arg(1, usuario.roles).build()}"
method="POST" modelAttribute="usuario">
<h1>Cadastro de Permissões para ${usuario.nome}</h1>
<form:checkboxes items="${listaRoles}" path="roles"/>
<br>
<button type="submit">Atualizar</button>
</form:form>
na URL da página de edição dos roles, aparece o email correto, como eu disse. Não estou entendendo o porquê da página acabar sempre puxando o Admin. Me parece que ele está recuperando apenas o usuário logado no sistema. O que eu estou deixando passar?