public void wygeneruj(HashMap lista) throws Exception { FacesContext facesCtx = FacesContext.getCurrentInstance(); ELContext elContext = facesCtx.getELContext(); ExpressionFactory ef = ExpressionFactory.newInstance(); akordeon = new AccordionPanel(); // robienie glownej oprawy Set nazwyew = lista.keySet(); Iterator it; it = nazwyew.iterator(); int i = 0; while (it.hasNext()) { String nazwapj = (String) it.next(); Tab tab = new Tab(); tab.setId("tabek" + i); tab.setTitle("ewidencja: " + nazwapj); DataTable dataTable = new DataTable(); dataTable.setId("tablica" + i); // dataTable.setResizableColumns(true); dataTable.setVar("var"); dataTable.setValue(lista.get(nazwapj)); dataTable.setStyle("width: 1000px;"); // tak trzeba opisac kazda kolumne :) ArrayList<String> opisykolumn = new ArrayList<>(); opisykolumn.addAll(EVatViewPola.getOpispol()); Iterator itx; itx = opisykolumn.iterator(); while (itx.hasNext()) { String wstawka = (String) itx.next(); Column column = new Column(); column.setHeaderText(wstawka); final String binding = "#{var." + wstawka + "}"; ValueExpression ve = ef.createValueExpression(elContext, binding, String.class); HtmlOutputText ot = new HtmlOutputText(); ot.setValueExpression("value", ve); switch (wstawka) { case "kontr": column.setWidth("350"); break; case "id": column.setWidth("50"); break; case "netto": ot.setStyle("float: right;"); NumberConverter numx = new NumberConverter(); numx.setMaxFractionDigits(2); numx.setMinFractionDigits(2); ot.setConverter(numx); case "vat": ot.setStyle("float: right;"); NumberConverter numy = new NumberConverter(); numy.setMaxFractionDigits(2); numy.setLocale(new Locale("PL")); numy.setGroupingUsed(true); ot.setConverter(numy); } column.getChildren().add(ot); dataTable.getChildren().add(column); } Separator sep = new Separator(); CommandButton button = new CommandButton(); button.setValue("PobierzPdf"); button.setType("button"); button.setId("przyciskpdf" + i); FacesContext context = FacesContext.getCurrentInstance(); MethodExpression actionListener = context .getApplication() .getExpressionFactory() .createMethodExpression( context.getELContext(), "#{pdf.drukujewidencje('zakup')}", null, new Class[] {ActionEvent.class}); button.addActionListener(new MethodExpressionActionListener(actionListener)); // MethodExpression methodExpressionX = // context.getApplication().getExpressionFactory().createMethodExpression( // context.getELContext(), "#{pdf.drukujewidencje('"+nazwapj+"')}", null, new // Class[] {}); // button.setActionExpression(methodExpressionX); String nowanazwa; if (nazwapj.contains("sprzedaż")) { nowanazwa = nazwapj.substring(0, nazwapj.length() - 1); } else { nowanazwa = nazwapj; } String tablican = "PrimeFaces.ab({source:'form:przyciskpdf" + i + "',onsuccess:function(data,status,xhr){wydrukewidencje('" + wpisView.getPodatnikWpisu() + "','" + nowanazwa + "');;}});return false;"; button.setOnclick(tablican); tab.getChildren().add(dataTable); tab.getChildren().add(sep); tab.getChildren().add(button); akordeon.getChildren().add(tab); i++; } // generowanie podsumowania List<EVatwpisSuma> suma2 = new ArrayList<>(); suma2.addAll(sumaewidencji.values()); Tab tab = new Tab(); tab.setId("tabekdsuma"); tab.setTitle("podsumowanie ewidencji"); DataTable dataTable = new DataTable(); dataTable.setId("tablicasuma"); dataTable.setResizableColumns(true); dataTable.setVar("var"); dataTable.setValue(suma2); dataTable.setStyle("width: 1000px;"); List<String> opisykolumny = new ArrayList<>(); opisykolumny.add("ewidencja"); opisykolumny.add("netto"); opisykolumny.add("vat"); Iterator ity = opisykolumny.iterator(); while (ity.hasNext()) { String wstawka = (String) ity.next(); Column column = new Column(); column.setHeaderText(wstawka); HtmlOutputText ot = new HtmlOutputText(); if (!wstawka.equals("ewidencja")) { ot.setStyle("float: right;"); NumberConverter numberconv = new NumberConverter(); numberconv.setLocale(new Locale("PL")); numberconv.setMinFractionDigits(2); numberconv.setMaxFractionDigits(2); column.setWidth("200"); ot.setConverter(numberconv); } final String binding = "#{var." + wstawka + "}"; ValueExpression ve = ef.createValueExpression(elContext, binding, String.class); ot.setValueExpression("value", ve); column.getChildren().add(ot); dataTable.getChildren().add(column); } tab.getChildren().add(dataTable); akordeon.getChildren().add(tab); }