Mjovanov, I just have time for short answers. You will need to do the research.
1) Media specific CSS Classes may be the answer. This way the user prints from the browser without the need of a "Printable Format" page.
2) Shale Dialogs. http://shale.apache.org. Paul Spencer mjovanov wrote:
Hello, Please consider the following scenario: a page with a dataTable component and a backing bean with two DataModel properties, one for the rows (binding to the 'value' attribute of the dataTable) and one for columns (binding to the 'value' attribute of the nested t:columns tag). The backing bean is configured in faces-config.xml to 'request' scope, but is being serialized between requests by using the t:saveState tag (so that paging for example would not require additional hits to the database). So far everything is working as expected. However, problems arise when I try to implement a link on the page that allows a user to open the table in a new window, and without paging (for printing purposes). The catch is that I want to be able to still use the same backing bean so that the data doesn’t have to be retrieved again, and also so that the sort would be preserved. Could anyone suggest the approach to take? I tried the following: Define a commandLink component and bind it to an action method on the backing bean, like this: <h:outputLink value="searchView.faces" target="_blank" class="linkCaption" rendered="#{workbenchForm.dataFound}"> <t:graphicImage url="images/printer_icon.gif"alt="#{msg.labelPrintQueueSumm}" width="21" height="14" /> <h:outputText value="#{msg.labelPrintQueueSumm}"/></h:outputLink><br/> The body of the action method would then look like something like this: public void forwardToPrintView() throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)getRequest(); HttpServletResponse response = (HttpServletResponse)getResponse(); request.setAttribute("rows", rows.getWrappedData()); request.setAttribute("columns", columns.getWrappedData()); request.getRequestDispatcher("/workbenchPrint.faces").forward(request, response);getFacesContext().responseComplete(); }However this only works one time; after that I start seeing some really weird behavior, like all links on the original page that were previously working correctly start opening content in a new window?! At first I though there may be a problem with the target=”_blank” attribute, but when I switched the commandLink component to an outputLink and had it point to another page all together (without accessing the serialized backing bean) the problem went away; could it be that the JSF state some how got corrupted? Any suggestions/clues would be greatly appreciated. PS I was able to get very similar functionality to work for "Exporting to Excel"; the action method for this looks like this: public void exportHtmlTableToExcel() throws IOException{ /*Set the filename DateTime dt = new DateTime(); DateTimeFormatter fmt = DateTimeFormat.forPattern("yyyy-MM-dd_HHmmss"); String filename = dt.toString(fmt) + ".xls";*///Setup the outputString contentType = "application/vnd.ms-excel"; FacesContext fc = FacesContext.getCurrentInstance(); String filename = fc.getExternalContext().getUserPrincipal().getName() + "-"+ System.currentTimeMillis() + ".xls"; HttpServletResponse response = (HttpServletResponse)fc.getExternalContext().getResponse(); response.setHeader("Content-disposition", "attachment; filename=" + filename); response.setContentType(contentType);//Write the table back outPrintWriter out = response.getWriter(); //First write column headings List columnList = (List)columns.getWrappedData(); for (Iterator it = columnList.iterator(); it.hasNext(); ) { out.print(((TableColumnDTO)it.next()).getLabel() + "\t"); } out.println(); List data = (List)rows.getWrappedData(); for (Iterator i = data.iterator(); i.hasNext(); ) { List row = (List)i.next(); for (Iterator j = row.iterator(); j.hasNext(); ) { Object value = j.next(); out.print((value != null ? value : "") + "\t"); } out.println(); } out.close(); fc.responseComplete(); } One important difference to note is that the link for "Exporting to Excel" does not have the target attribute set to '_blank' (since the content type would force another application to handle it, thus opening it in a new window automatically).

