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

Método que aceita um parâmetro vazio ou não

Estou fazendo um blog para fixar meus conhecimentos e estou com um problema de repetição de código:

    //mostra o form 
    @RequestMapping(value="/novo", method=RequestMethod.GET)
    public ModelAndView mostraForm() {
        Pagina p = new Pagina();
        ModelAndView modelAndView = new ModelAndView("admin/paginas/form");
        modelAndView.addObject("acao", "Listar"); //volta pro listar
        modelAndView.addObject("pagina", p);
        return modelAndView;
    }

    @RequestMapping(value="/editar/{id}", method=RequestMethod.GET)
    public ModelAndView updateForm(@PathVariable("id") Integer id) {
        Pagina p = new Pagina();
            p        = dao.find(id);

        ModelAndView modelAndView = new ModelAndView("admin/paginas/form");
        modelAndView.addObject("acao", "Listar"); //volta pro listar
        modelAndView.addObject("pagina", p);
        return modelAndView;
    }

Esses dois métodos praticamente iguais, gostaria de otimizar meu código para que aceite "/editar/{id}" ou assim "/novo". É possível?

2 respostas
@RequestMapping({"/editar/{id}", "/novo"}) 
solução!

Obrigada me esclareceu bastante

troquei o @PathVariable pelo @RequestParam e foi :)

    @RequestMapping(value= {"/novo","/editar/"}, method=RequestMethod.GET)
    public ModelAndView form( @RequestParam(value="id", required = false)   Integer id) {
                Pagina p = new Pagina();

        if (id != null)
            p        = dao.find(id);

        ModelAndView modelAndView = new ModelAndView("admin/paginas/form");
        modelAndView.addObject("acao", "Listar"); //volta pro listar
        modelAndView.addObject("pagina", p);
        return modelAndView;
    }