Estou fazendo um sisteminha de receitas com o Spring MVC, e já implementei um action em um dos meus Controllers de entidade, onde o usuário passa parâmetro pela URL:
@RequestMapping("/{titulo}")
public String exibeReceita(@PathVariable String titulo,Model model,HttpServletResponse response)
{
//Trata a String
titulo = titulo.replace("-", " ");
//Recupera do banco
List<Receita> receitas = this.daoReceita.getPorCampo(Receita.CAMPO_TITULO, Dao.EQUALS, titulo);
//Verifica se existe a receita
if(receitas.isEmpty())
{
response.setStatus(404);
return "/404";
}
//Retorna a view+dados
model.addAttribute("receita", receitas.get(0));
return "receita/exibe";
}
Este action simplesmente pega a variável vinda da URL e remove os traços, depois faz um select no banco do titulo da receita que é igual ao parametro informado…até ai OK.
Porém, e nos casos em que tiver dois registros com 2 titulos iguais ? existe algum padrão utilizado para este tipo de coisa ?
Porque pensei em trocar a url pelo titulo para url pelo id, mas ai vai ficar feio, queria pelo título mesmo porque ficaria algo asism por exemplo:
www.receitas.com.br/receitas/Bolo-De-Chocolate //Título da receita
Não queria ter que fazer isso:
www.receitas.com.br/receitas/19239123 //ID da receita
Muito menos isso :
www.receitas.com.br/receitas/?id=19283912&titulo=Bolo+De+Chocolate //GET
Aguardo opiniões, obrigado…