How to pass HashMap to forEach tag in xls generated by jett?

221 views Asked by At

I have a Map in managed bean

    private Map<FaseProducao, Set<FichaTecnicaOperacao>> fichasTecnicasOperacaoResumo;

that reference to entity FichaTecnica:

public class FichaTecnica{
//...
    private Set<FichaTecnicaOperacao> operacoes;
}

which I need to pass as a parameter on a beans.put () to generate an xls with jett:

public void createRelatorioFichaTecnica(FichaTecnica fichaTecnica) throws IOException {
    //ommited...
    Map<String, Object> beans = new HashMap<String, Object>();
    beans.put("operacaoResumo", fichasTecnicasOperacaoResumo);

    try (ByteArrayOutputStream saida = new ByteArrayOutputStream();
            InputStream template = this.getClass().getResourceAsStream("/templates/jett/fichaTecnica.xls");
            Workbook workbook = transformer.transform(template, beans);) {
            //ommited...
            }
}

when the xls is generated the exception happens:

WARNING [javax.enterprise.resource.webcontainer.jsf.lifecycle] (default task-28) #{ProdutoManagedBean.createRelatorioFichaTecnica(row)}: net.sf.jett.exception.AttributeExpressionException: Expected a "java.util.Collection" for "items", got a "java.util.HashMap":  "${operacaoResumo}".

so I'm not understanding this error because a Map is a correct collection? So why does not jett recognize it in items = "$ {operacaoResumo}"? I created this forEach based on the link on the site: http://jett.sourceforge.net/tags/forEach.html

1

There are 1 answers

0
philabreu On BEST ANSWER

As @rgettman said I did:

public void createRelatorioFichaTecnica(FichaTecnica fichaTecnica) throws IOException {
    //ommited...
    Map<String, Object> beans = new HashMap<String, Object>();
    beans.put("operacaoResumo", fichasTechicasOperacaoResumo.keySet());

}

thank you all!