Botão editar: home.jsp
<a class="btn btn-default"
href="<c:url value="/produto/${produto.id}/form"/>">Editar </a>
ProdutoController.java Update
@RequestMapping(value="/{id}/form", method=RequestMethod.GET)
public String update(@PathVariable Integer id, Model model) {
Produto produto = produtoDao.getProduto(id);
model.addAttribute("produto", produto);
return form(produto);
}
CadastroProduto
@Transactional
@RequestMapping(method=RequestMethod.POST, name="cadastraProduto")
public String salvar(@ModelAttribute @Valid Produto produto, BindingResult result, RedirectAttributes atts) {
if(result.hasErrors()) {
return form(produto);
}
produtoDao.insere(produto);
return "redirect:/";
}
URL solicitada:
http://localhost:8080/projeto-jpa-2/produto/2/form
Erro 500:
javax.el.ELException: Problems calling function [spring:mvcUrl]
org.apache.jasper.JasperException: javax.el.ELException: Problems calling function [spring:mvcUrl]
java.lang.IllegalArgumentException: Mapping not found: cadastraProduto
chamada:
<form action="${spring:mvcUrl('cadastraProduto').build()}" method="post">
Dependências do Projeto:
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<!-- <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId>
<version>2.6.9</version> </dependency> -->
<!-- Hibernate EHCache API -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId>
<version>5.4.3.Final</version>
</dependency>
<!-- EHCache uses slf4j for logging -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.7.5</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.25</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.2.Final</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.version}</version>
</dependency>
O que está sendo proposto a ser explicado nessa aula é que somente através do openentitymanager é possível fazer a jsp acessar o conteúdo categorias por que a sessão com o banco não foi finalizada ainda e desta forma é possível popular o form? Tive tanto problema com o projeto em si que até perdi a noção do que vocês gostariam de repassar nestas aulas...
Obrigado.