Prezados, boa noite.
Gostaria de saber qual a diferença entre as taglibs c:url e s:mvcUrl e se eu poderia substituir no detalhe.jsp o c:url value="/carrinho/add" por s:mvcUrl("CCC#add").build().
Att Dirley
Prezados, boa noite.
Gostaria de saber qual a diferença entre as taglibs c:url e s:mvcUrl e se eu poderia substituir no detalhe.jsp o c:url value="/carrinho/add" por s:mvcUrl("CCC#add").build().
Att Dirley
"s:mvcUrl" é uma taglib usada em projetos Spring MVC que serve para criar uma URL a partir de um request mapping do seu Controller.
A tag JSTL <c: url> é usada para formatação de URLs em geral e, opcionalmente, armazena a URL em uma variável.
No fim das contas dá para usar qualquer uma delas (=
Abraço!
<form action="${s:mvcUrl('CCC#add').arg(0,produdo.id).build() }" method="post" class="container">
import br.com.casadocodigo.loja.daos.ProdutoDAO;
import br.com.casadocodigo.loja.models.CarrinhoCompras;
import br.com.casadocodigo.loja.models.CarrinhoItem;
import br.com.casadocodigo.loja.models.TipoPreco;
@Controller
@Scope(value=WebApplicationContext.SCOPE_REQUEST)
@RequestMapping("/carrinho")
public class CarrinhoComprasController {
@Autowired
ProdutoDAO produtoDao;
@Autowired
CarrinhoCompras carrinho;
@RequestMapping("/add")
public ModelAndView add(Integer produtoId, TipoPreco tipoPreco) {
System.out.println("entrou em add "+produtoId);
carrinho.add(new CarrinhoItem(produtoDao.findProduto(produtoId), tipoPreco));
return new ModelAndView("redirect:/produtos");
}
}
Então porque o trecho acima não funciona?
o produtoId inserido no form de detalhe.jsp não é passado como parâmetro para o método add do controller CarrinhoComprasController, nem passando por argumento através do mvcUrl... porém, se eu usar <c:url ... >, funciona perfeitamente.
Chega a lançar algum erro quando você tenta passar com o s:mvcUrl?
Nenhum erro. Apenas chega null nos parâmetros.
Prezados, boa tarde.
Ainda não obtive uma resposta a minha dúvida. Poderiam me ajudar?