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

Como passa um Enum em um jsp com SpringMVC

// meu enum public enum Alimentacao { CARNIVORA, HERBIVORA, ORNIVORA; }

// a classe entidade public class Animal implements Serializable {

[...] 

private Alimentacao alimentacao;

[...]

public void setAlimentacao(Alimentacao alimentacao) {
    this.alimentacao = alimentacao;
}

}

// o controller dela public class AnimalController {

[...]

@RequestMapping("/form")
public ModelAndView form(Animal animal) {
    ModelAndView modelAndView = new ModelAndView("animal/form");
    modelAndView.addObject("alimentacaoTipos", Alimentacao.values());
    return modelAndView;
}

[...]

}

// o pedaço do meu jsp

Alimentação: ${alimentacaoTipo}

quando tento passa o enum via jsp ele nao passa, quando imprimo o objeto animal (na volta do controller)

Animal [id=null, nome=Morcego, alimentacao=null]

->>> alimentacao=null

o que estou fazendo de errado???

7 respostas

Oi Ricardo,

Poderia mandar o trecho completo do código JSP? Parece que está tudo certo na sua classe Animal, getters e setters, e tudo mais.

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>

Cadastro de Amimais

Nome:
        <div>
            <label>Alimentação: </label>
            <form:select path="alimentacao">
                <c:forEach items="${alimentacaoTipos}" var="alimentacaoTipo" varStatus="status">
                    <form:option value="${status.index}">${alimentacaoTipo}</form:option>
                </c:forEach>
            </form:select>
        </div>

        <div>
            <label>Locomoção: </label>
            <form:select path="locomocao">
                <c:forEach items="${locomocaoTipos}" var="locomocaoTipo" varStatus="status">
                    <form:option value="locomocaoTipo">${locomocaoTipo}</form:option>
                </c:forEach>
            </form:select>
        </div>

        <div>
            <label>Classe: </label>
            <form:select path="idClasse">
                <c:forEach items="${classes}" var="classe">
                    <form:option value="${classe.id}">${classe.nome}</form:option>
                </c:forEach>
            </form:select>
        </div>

        <button type="submit">Cadastrar</button>
    </form:form>
</body>

Oi desculpe, desconsidere a de cima, passei com uma alteração que tentei corrigir errado abaixo segue a certa:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="s"%>

Cadastro de Amimais

Nome:
        <div>
            <label>Alimentação: </label>
            <form:select path="alimentacao">
                <c:forEach items="${alimentacaoTipos}" var="alimentacaoTipo" varStatus="status">
                    <form:option value="alimentacaoTipo">${alimentacaoTipo}</form:option>
                </c:forEach>
            </form:select>
        </div>

        <div>
            <label>Locomoção: </label>
            <form:select path="locomocao">
                <c:forEach items="${locomocaoTipos}" var="locomocaoTipo" varStatus="status">
                    <form:option value="locomocaoTipo">${locomocaoTipo}</form:option>
                </c:forEach>
            </form:select>
        </div>

        <div>
            <label>Classe: </label>
            <form:select path="idClasse">
                <c:forEach items="${classes}" var="classe">
                    <form:option value="${classe.id}">${classe.nome}</form:option>
                </c:forEach>
            </form:select>
        </div>

        <button type="submit">Cadastrar</button>
    </form:form>
</body>
solução!

Oi, já achei o erro

<form:option value="locomocaoTipo">${locomocaoTipo}

o correto seria

<form:option value="${locomocaoTipo}">${locomocaoTipo}

Mas obrigado!!!

Show de bola! Posso fechar o tópico?

Sim obrigado!!!

Show!

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