Olá amigos! Feliz ano novo adiantado!
Estou empacado num problema, vou descrevê-lo e colocar um link para um gist com os arquivos relevantes.
Tenho um serviço que faz o cadastro de usuários. Esse cadastro é feito através de um form, mas o role do usuário não é determinado nesse form. O sistema tem 3 roles disponíveis e eu preciso conseguir, através de uma tela de edição, mudar o role dos usuários conforme minha necessidade. (as
O form está funcionando perfeitamente, a tabela que lista os usuários também e o que eu preciso é passar as informações do usuário para a tela de edição. Porém, quando eu clico no botão para me levar até o form de edição, não consigo acessar as informações pelo método no meu controller. Fiz diversas tentativas diferentes, porém o resultado sempre foi o um sysout com o usuário null.
Espero que a explicação não tenha ficado muito esquisita. Segue abaixo o gist com os arquivos relevantes.
arquivos
vou deixar elencado aqui onde está meu problema
lista.jsp
<c:forEach items="${usuarios}" var="usuario">
<tr>
<td>${usuario.nome}</td>
<td>${usuario.email}</td>
<td>${usuario.roles}</td>
<td>
<form:form servletRelativeAction="${s:mvcUrl('UC#editarForm').arg(0, usuario.email).build()}"
method="POST" modelAttribute="email">
<input type="image" name="usuario" src="${resPath}/imagens/editar.png" alt="Editar" title="Editar" >
</form:form>
</td>
</tr>
</c:forEach>
UsuarioController.java
@RequestMapping("/roles/{email}")
public ModelAndView editarForm(@PathVariable("email") String email) {
ModelAndView mav = new ModelAndView("/usuarios/editar");
Usuario usuario = usuarioDao.loadUserByUsername(email);
mav.addObject("usuario", usuario);
List<Role> listaRoles = roleDao.listar();
mav.addObject("listaRoles", listaRoles);
return mav;
}
ambos os códigos acima já foram bastante alterados e com tentativas diferentes: tentar passar o usuário através do form:form e receber como parâmetro no método, usar o modelAttribute para marcar o usuário e receber isso através da anotação no controller, tentar passar o email e localizar o usuário pelo email (como feito acima pelo método loadUserByUsername()). Nem lembro todas as tentativas. A última, essa que está aí agora, foi uma tentativa baseada em outro canto do projeto que funciona ao carregar detalhe dos produtos. O erro que recebi nessa tentativa (e já ocorreu em outras também) foi:
javax.persistence.NoResultException: No entity found for query
não colei o stacktrace todo, porque só nessa linha já dá pra notar que ele não conseguiu encontrar o usuario pelo email. No caso, esqueci de fazer o sysout nessa vez, já tinha apagado de dentro do método editarForm, mas o resultado seria uma impressão de valor nulo do email que deveria estar sendo recebido.
Galera, me dá uma luz, o que eu estou deixando passar? Realmente não faço ideia =/
Grato,
Vinícius