Olá pessoal.
Possuo duas entidades Produto e Categoria, com um relacionamento ManyToOne.
O formulário de cadastro de produtos possui um combo box/select com todas as categorias cadastradas.
Entretanto, não consigo settar o atributo categoria do produto para salvá-lo.
Se alguém puder me explicar como arrumar isso, ou uma solução mais elegante, agradeço muito.
Segue abaixo o que consegui fazer:
@Entity
public class Produto {
@Id @GeneratedValue
private Long id;
private String nome;
@ManyToOne
private Categoria categoria;
// ...
}
[code]@Entity
public class Categoria {
@Id @GeneratedValue
private Long id;
private String nome;
// ...
}[/code]
[code]@Controller
public class ProdutoController {
@Inject
private ProdutoDao dao;
@Inject
private CategoriaDao categoriaDao;
@Inject
private Result result;
@Get("/produtos/novo")
public void form() {
result.include("categorias", categoriaDao.listaTudo());
}
@Post("/produtos")
public void adiciona(Produto produto, Categoria categoria) {
produto.setCategoria(categoria); // ??
dao.salva(produto);
result.redirectTo(this).lista();
}
}
[/code]
<form id="produtoForm" action="<c:url value="/produtos"/>" method="post">
<div>
<label for="nome">Produto</label>
<input id="nome" name="produto.nome">
</div>
<div>
<label for="categoria">Categoria</label>
<select id="categoria" name="produto.categoria">
<c:forEach items="${categorias}" var="categoria">
<option value="${categoria.id}">${categoria.nome}</option>
</c:forEach>
</select>
</div>
<button type="submit">Enviar</button>
</form>