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

Popular Select-Spring MVC

Boa tarde estou querendo popular um select com informações que tenho banco de dados:

Controller
@RequestMapping("/pacientes")
public class PacientesController {



    @Autowired
    private PacienteDAO pacienteDAO;

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        binder.addValidators(new PacienteValidation());
    }

    @RequestMapping("/novo")
    public ModelAndView form(Paciente paciente) {
        ModelAndView modelAndView = new ModelAndView("pacientes/novo");
        return modelAndView;
    }
    // Popular select with hibernate 
    /**
    @RequestMapping("/novo")
     public String select(Model model) {
        model.addAttribute("sexos", daoGeral.listaSexo());
        return "pacientes/novo";
    }**/

    @RequestMapping(value="/novo", method=RequestMethod.POST)
    public ModelAndView gravar(@Valid Paciente paciente,BindingResult result, RedirectAttributes redirectAttributes) {

        if(result.hasErrors()) {
            return form(paciente);
        }
        pacienteDAO.gravar(paciente);
        redirectAttributes.addFlashAttribute("sucesso", "Paciente cadastrado com sucesso!");
        return new ModelAndView("redirect:lista");
    }

    @RequestMapping(value="/lista",method=RequestMethod.GET)
    public ModelAndView listar(){
        List<Paciente> pacientes = pacienteDAO.listar();
        ModelAndView modelAndView = new ModelAndView("pacientes/lista");
        modelAndView.addObject("pacientes", pacientes);
        return modelAndView;
    }
@Repository
@Transactional
public class GeralDAO {

@PersistenceContext

    private EntityManager manager;

    public List<Sexo> listaSexo(){
        return manager.createQuery("select s from Sexo s", Sexo.class).getResultList();
    }

}

porém nao tenho certeza como fazer,ja tentei alguns metodos,porem não funcionaram

No jsp ta assim

<form:select path="sexo" class="form-control" >
<form:option value=""></form:option>
<c:forEach items="${sexos}" var="s">  
        <option value="${s.id}"><c:out value="${s.descricao}" /></option>  
        </c:forEach>
</form:select>
2 respostas
solução!
<select name="cliente.id">
    <c:forEach items="${sexos}" var="s">
        <option value="${s.id}">${s.descricao}</option>
    </c:forEach>
</select>

no caso como vou fazer o controller?

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