Eu estou com uma dúvida faz umas horas. Criei uma classe categoria e um produto, quero que meu cliente cadastre um categoria para que na parte de jsp de cadastrar um produto ele posso dizer que aquele produto é dessa categoria mas não consigo fazer com que minha jsp e controller cadastre o produto e mostre as categorias relacionadas. Como faço esse controlado e essa jsp de cadastro de produtos?
minhas classes
@Entity
public class Produto {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String nome;
private String descricao;
private BigDecimal preco;
@ManyToOne
@JoinColumn(name="categoria_id")
private Categoria categoria;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public BigDecimal getPreco() {
return preco;
}
public void setPreco(BigDecimal preco) {
this.preco = preco;
}
public Categoria getCategoria() {
return categoria;
}
public void setCategoria(Categoria categoria) {
this.categoria = categoria;
}
}
@Entity
public class Categoria {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String nome;
private String descricao;
@OneToMany(mappedBy = "categoria", targetEntity = Produto.class, fetch = FetchType.LAZY, cascade = CascadeType.ALL)
private List<Produto> produtos = new ArrayList<Produto>();
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
public List<Produto> getProdutos() {
return produtos;
}
public void setProdutos(List<Produto> produtos) {
this.produtos = produtos;
}
}
@Controller
public class ProdutosController {
@Autowired
private ProdutoDAO produtoDao;
@RequestMapping("produtos/form")
public ModelAndView form(){
ModelAndView modelAndView = new ModelAndView("produtos/form");
return modelAndView;
}
@RequestMapping("/produtos")
public String gravar(Produto produto){
produtoDao.gravar(produto);
return "ok";
}
}
<%@ page language=“java” contentType="text/html; charset=UTF-8"
pageEncoding=“UTF-8”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<form action="/mundoacessorios/produtos" method="POST">
<div>
<label>Nome</label> <input type="text" name="nome">
</div>
<div>
<label>Descricao</label>
<textarea rows="10" cols="20" name="descricao"></textarea>
</div>
<div>
<label>Preco</label> <input type="text" name="preco">
</div>
<label>Categoria</label>
<select name="categoria" id="categoria">
<c:forEach var="categoria" items="${categoria}">
<option value="${categoria.id}">${categoria.nome}</option>
</c:forEach>
</select>
<button type="submit">Cadastrar</button>
</form>