Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Como usar o <c:if> ????

Pessoal estou com uma dúvida, não estou conseguindo usar o <c:if>, acontece que tenho duas classes relacionadas com Many to Many criando uma terceira tabela no banco, e quando vou exibir os resultados na tela queria só aparecessem as peças que são relacionadas com aquele produto, mas ao invés disso está aparecendo a lista completa de peças o que devo fazer? Estou perdido! Vlw obrigado!

OBS: Da forma como está gera erro, mas se tiro o <c:if> ocorre o mencionado acima.

public class Produto {

    @Id
    @Column
    private Integer codProduto;
    @Column
    private String descricaoProduto;
    @Column
    private String fornecedor;
    @Column
    private BigDecimal precoProduto;
    @Column
    private Integer qtdProdutoEstoque;

    @ManyToMany
    @JoinTable(name = "produto_peca", joinColumns = @JoinColumn(name = "produto_id"), inverseJoinColumns = @JoinColumn(name = "peca_id"))
    private List<Peca> pecasProduto;

    public Produto(String descricaoProduto, Integer codProduto, BigDecimal precoProduto, List<Peca> pecasProduto,
            Integer qtdProdutoEstoque, String fornecedor) {
        this.descricaoProduto = descricaoProduto;
        this.codProduto = codProduto;
        this.precoProduto = precoProduto;
        this.pecasProduto = pecasProduto;
        this.qtdProdutoEstoque = qtdProdutoEstoque;
        this.fornecedor = fornecedor;
    }

    public Produto() {
    }

    public String getDescricaoProduto() {
        return descricaoProduto;
    }

    public void setDescricaoProduto(String descricaoProduto) {
        this.descricaoProduto = descricaoProduto;
    }

    public Integer getCodProduto() {
        return codProduto;
    }

    public void setCodProduto(Integer codProduto) {
        this.codProduto = codProduto;
    }

    public BigDecimal getPrecoProduto() {
        return precoProduto;
    }

    public void setPrecoProduto(BigDecimal precoProduto) {
        this.precoProduto = precoProduto;
    }

    public List<Peca> getPecasProduto() {
        return pecasProduto;
    }

    public void setPecasProduto(List<Peca> pecasProduto) {
        this.pecasProduto = pecasProduto;
    }

    public Integer getQtdProdutoEstoque() {
        return qtdProdutoEstoque;
    }

    public void setQtdProdutoEstoque(Integer qtdProdutoEstoque) {
        this.qtdProdutoEstoque = qtdProdutoEstoque;
    }

    public String getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(String fornecedor) {
        this.fornecedor = fornecedor;
    }

}

public class Peca {

    @Id
    @Column
    private Integer codPeca;
    @Column
    private String descricaoPeca;
    @Column
    private BigDecimal precoPeca;
    @Column
    private Integer qtdPecaEstoque;
    @Column
    private String fornecedor;

    @ManyToMany(mappedBy = "pecasProduto")
    private List<Produto> produtos;

    public Peca(String descricaoPeca, Integer codPeca, BigDecimal precoPeca, Integer qtdPecaEstoque,
            List<Produto> produtos, String fornecedor) {
        this.descricaoPeca = descricaoPeca;
        this.codPeca = codPeca;
        this.precoPeca = precoPeca;
        this.qtdPecaEstoque = qtdPecaEstoque;
        this.produtos = produtos;
        this.fornecedor = fornecedor;
    }

    public Peca() {
    }

    public String getDescricaoPeca() {
        return descricaoPeca;
    }

    public void setDescricaoPeca(String descricaoPeca) {
        this.descricaoPeca = descricaoPeca;
    }

    public Integer getCodPeca() {
        return codPeca;
    }

    public void setCodPeca(Integer codPeca) {
        this.codPeca = codPeca;
    }

    public BigDecimal getPrecoPeca() {
        return precoPeca;
    }

    public void setPrecoPeca(BigDecimal precoPeca) {
        this.precoPeca = precoPeca;
    }

    public Integer getQtdPecaEstoque() {
        return qtdPecaEstoque;
    }

    public void setQtdPecaEstoque(Integer qtdPecaEstoque) {
        this.qtdPecaEstoque = qtdPecaEstoque;
    }

    public List<Produto> getProdutos() {
        return produtos;
    }

    public void setProdutos(List<Produto> produtos) {
        this.produtos = produtos;
    }

    public String getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(String fornecedor) {
        this.fornecedor = fornecedor;
    }

}


<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    

<c:url value="/controller" var="LinkEntrada"/>    


<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="${LinkEntrada }" method="post">

    <ul>
    <c:forEach items="${listaProdutos }" var="produto">
        <li>Cód: ${produto.codProduto } / Produto: ${produto.descricaoProduto }/ Estoque: ${produto.qtdProdutoEstoque },
            <ul>
            <c:forEach items="${listaPecas }" var="peca">
                <c:if test="${peca.produtos.codProduto == produto.codProduto }" >
                <li>${peca.codPeca }, - ${peca.descricaoPeca }</li>
                </c:if>
            </c:forEach>
            </ul>
        </li>
    </c:forEach>

    </ul>

    </form>






</body>
</html>
1 resposta
solução!

Oi Henry, tudo bem?

Pelo que entendi, você está com dificuldades em utilizar a tag <c:if> para exibir apenas as peças relacionadas com um determinado produto, certo?

Uma solução para esse problema seria utilizar a tag <c:forEach> para percorrer a lista de peças de cada produto e, dentro dela, utilizar a tag <c:if>para verificar se a peça está relacionada com o produto desejado.

Você pode fazer isso comparando o código do produto da lista de peças com o código do produto que você deseja exibir as peças relacionadas. Por exemplo:

<c:forEach items="${produto.pecasProduto}" var="peca">
   <c:if test="${peca.produtos[0].codProduto eq produto.codProduto}">
      <li>${peca.codPeca}, - ${peca.descricaoPeca}</li>
   </c:if>
</c:forEach>

Note que utilizamos a posição 0 da lista de produtos da peça, pois estamos considerando que cada peça está relacionada com apenas um produto. Caso contrário, seria necessário percorrer a lista de produtos da peça e verificar se algum deles possui o código do produto desejado.

Um abraço e bons estudos.