Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Drop down - selecionar categoria

Olá!

Estou tentando criar um drop down de categorias, mas ao enviar o formulário, o controller recebe o valor Null.

Modelo:

public class Mockup {
    private Categoria categoria;

    public Categoria getCategoria() {
        return categoria;
    }

    public void setCategoria(Categoria categoria) {
        this.categoria = categoria;
    }

}

JSP:

<form action="<c:url value="/mockup/salvar"/>" id="salvarMockup" method="post">


                <div class="col col-2-4">
                <label for="categoria">Categoria</label>

                <select name="mockup.categoria.codigo" id="categoria"  required>
                    <option value="">Selecione</option>
                    <c:forEach items="${categorias}" var="categoria">
                    <option value="${categoria.codigo}" ${mockup.categoria.codigo == categoria.codigo ? 'selected' : ''}>${categoria.descricao}</option>
                    </c:forEach>                                
                </select>


                </div>

                <div>
                    <button name="Enviar">Enviar</button>
                </div>

            </form>

Controller:

@Path("/mockup/salvar")
        public void salvarMockup(Mockup moc) {
            System.out.println(moc.getCategoria().getCodigo());

grata. Andréia

6 respostas

Àndréia, o name no jsp está mockup.categoria.codigo e no Controller você usa como moc.

Mude na jsp para moc e faça um teste.

Oi Andreia, tudo bem?

Você conseguiu resolver seu problema?

Abraços!

Boa tarde!

João, no jsp estou informando para o select o atributo que será utilizado, já no controller ele esta recebendo o Objeto. Você acha que eu devo deixar o meu select assim:

<select name="moc" id="categoria" >

Leonardo, ainda não consegui testar o código. O problema persiste.

abraços.

solução!

Oi Andreia,

Parece ser o que o João já comentou aqui.

Os dados preenchidos pelo usuário no formulários passados através dos objetos (model) que recebemos como argumento no método. No seu caso você está dizendo que o valor do select é correspondente ao código da categoria de um objeto chamado mockup (mockup.categoria.codigo) . Certo?

Porém no método do seu controller você recebe um objeto chamado moc.

Possíveis soluções:

  • Trocar para moc.categoria.codigo

Ou:

  • Trocar para mockup.categoria.codigo e no método trocar o objeto moc para mockup.

Tudo bem?

Abraços!

Boa noite!

Deu certo!

Obrigada João e obrigada Leonardo.

abs