4
respostas

Spring Mvc

Olá gostaria se possível entrar em contato com o instrutor Paulo Alves Jr de Spring para tirar uma dúvida sobre o curso!

4 respostas

Olá Nilo! Pode postar a sua dúvida aqui mesmo que nossos instrutores e moderadores vão te ajudar!

Abraços

Olá Philippe no curso de Spring Mvc ele não ensina como fazer o formulário de cadastro do usuário com a role na view, então fiz o formulário mas esta faltando dizer q role ele pertence e não encontrei nada a respeito de como adicionar essa role no formulário poderia me ajudar???

Oi Nilo, coloca o código do seu formulário aqui?

Olá Philippe vou mostrar os passos que estou fazendo até chegar na view ok?!

Código Controller:

@Controller

public class AdminController {

    private long adminId;


    @Autowired
    private UsuarioDAO usuarioDao;

    @RequestMapping("/admin")
    public String admin(){
        Usuario user = (Usuario) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
        this.adminId = user.getId();
        System.out.println(this.adminId);
        return "admin/admin";
    }


    @RequestMapping("admin/formEmp")
    public ModelAndView prorpietario(){

        ModelAndView mv = new ModelAndView("admin/formularioEmpresa");
        return mv;
    }

    @PostMapping("/formEmp")
    public ModelAndView criarProprietario(Usuario usu){
        System.out.println(usu.toString());
        usuarioDao.salvar(usu);

        long proprietario = 2;
        usu.getId();
        System.out.println(usu.getId());
        usuarioDao.cadRole(usu.getId(), proprietario);

        return new ModelAndView("redirect:admin/formEmp");
    }

}

Codigo UsuarioDao:

@Repository
@Transactional

public class UsuarioDAO {

    @PersistenceContext
    private EntityManager manager;

    public void salvar(Usuario usuario){
        BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
        String pass = passwordEncoder.encode(usuario.getSenha());
        usuario.setSenha(pass);
        manager.persist(usuario);
    }
    public void cadRole(long usuario_id, long role_id){

        String query = "insert into UsuarioId values(id_usuario, id_role) VALUES (?,?)";
        manager.createNativeQuery(query)
           .setParameter(1, usuario_id)
           .setParameter(2, role_id)
           .executeUpdate();

    }

}


Código Entidade Usuario:

@Entity

public class Usuario implements UserDetails {

    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String nome;
    private String email;
    private String senha;

    @ManyToMany(fetch = FetchType.EAGER)
    @JoinTable(name = "usuario_role", joinColumns = @JoinColumn(name = "id_usuario")
    , inverseJoinColumns = @JoinColumn(name = "id_role"))
    private List<Role> roles = new ArrayList<>();
// gets e sets...
}


Codigo Entidade Role:

@Entity

public class Role implements GrantedAuthority{

    private static final long serialVersionUID = 1L;

    @Id
    private long id;

    @Enumerated(EnumType.STRING)
    private RoleName nome;
gets e sets...
}

Codigo da view:

<form action="/meuatendimento/formEmp" method="POST">
        <div>
            <label>Nome</label>
            <input type="text" name="nome">
        </div>
        <div>
            <label>email</label>
            <input type="text" name="email">
        </div>
        <div>
            <label>senha</label>
            <input type="password" name="senha">
        </div>
        <div>
            <input type="checkbox" name="administrador" value="id">
<label for="administrador">Administrador</label>
        </div>
        <button type="submit">Cadastrar</button>
        <input type="hidden" name="${_csrf.parameterName}" value="${_csrf.token}"/>

</form>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software