首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jett生成的xls中将HashMap传递给forEach标记?

如何在jett生成的xls中将HashMap传递给forEach标记?
EN

Stack Overflow用户
提问于 2017-09-11 13:12:07
回答 1查看 179关注 0票数 0

我在托管bean中有一个Map

代码语言:javascript
复制
    private Map<FaseProducao, Set<FichaTecnicaOperacao>> fichasTecnicasOperacaoResumo;

对实体FichaTecnica的引用:

代码语言:javascript
复制
public class FichaTecnica{
//...
    private Set<FichaTecnicaOperacao> operacoes;
}

它需要作为beans.put ()上的参数传递,以便使用jett生成xls:

代码语言:javascript
复制
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...
            }
}

当生成xls时,会发生异常:

代码语言:javascript
复制
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}".

所以我不理解这个错误,因为Map是一个正确的集合?那么,为什么杰特在条目= "$ {operacaoResumo}“中不认识它呢?我根据站点上的链接创建了这个forEach:http://jett.sourceforge.net/tags/forEach.html

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-11 19:38:25

就像@rgettman说的那样:

代码语言:javascript
复制
public void createRelatorioFichaTecnica(FichaTecnica fichaTecnica) throws IOException {
    //ommited...
    Map<String, Object> beans = new HashMap<String, Object>();
    beans.put("operacaoResumo", fichasTechicasOperacaoResumo.keySet());

}

谢谢大家!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46156593

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档