@Override public void setup(HtmlTable table) { this.table = table; // If the export has been configured to be triggered with a POST, PUT or // DELETE HTTP method, a custom plugin must be added to the page for (ExportConf exportConf : table.getTableConfiguration().getExportConfiguration().values()) { if (exportConf.getMethod().equals(HttpMethod.POST) || exportConf.getMethod().equals(HttpMethod.PUT) || exportConf.getMethod().equals(HttpMethod.DELETE)) { addBundle(DatatableBundles.JQUERY_DOWNLOAD); } } String exportContainerStyle = DatatableOptions.EXPORT_CONTAINER_STYLE.valueFrom(table.getTableConfiguration()); String exportContainerClass = DatatableOptions.EXPORT_CONTAINER_CLASS.valueFrom(table.getTableConfiguration()); // In order to be easily positioned around the table, a DataTable // feature is created ExtraHtml extraHtml = new ExtraHtml(); extraHtml.setUid("E"); extraHtml.setContainer("div"); extraHtml.setCssClass( "dataTables_export " + (StringUtils.isNotBlank(exportContainerClass) ? exportContainerClass : "")); extraHtml.setCssStyle( StringUtils.isNotBlank(exportContainerStyle) ? exportContainerStyle : "float: right;"); String dom = DatatableOptions.FEATURE_DOM.valueFrom(table.getTableConfiguration()); if (table.getTableConfiguration().getConfigurations().containsKey(DatatableOptions.CSS_THEME) && table .getTableConfiguration() .getConfigurations() .get(DatatableOptions.CSS_THEME) .getClass() .getSimpleName() .equals("JQueryUITheme")) { addParameter( DTConstants.DT_DOM, "<'" + TOOLBAR_PREXIX + "-tr'lEfr>t<'" + TOOLBAR_PREXIX + "-br'ip>", Mode.OVERRIDE); } else if (StringUtils.isBlank(dom)) { addParameter(DTConstants.DT_DOM, "lEfrtip", Mode.OVERRIDE); } StringBuilder content = new StringBuilder(); HtmlHyperlink link = null; // A HTML link is generated for each ExportConf bean for (ExportConf conf : table.getTableConfiguration().getExportConfiguration().values()) { link = new HtmlHyperlink(); if (conf.getCssClass() != null) { link.setCssClass(conf.getCssClass()); } if (conf.getCssStyle() != null) { link.setCssStyle(conf.getCssStyle()); link.addCssStyle(";margin-left:2px;"); } else { link.addCssStyle("margin-left:2px;"); } if (conf.hasCustomUrl()) { link.setOnclick(getOnclick(conf)); } else { link.setHref(conf.getUrl()); } link.addContent(conf.getLabel()); content.append(link.toHtml()); } extraHtml.setContent(content.toString()); // Once created, the extraHtml is transformed into Javascript and // appended in the DataTables configuration appendToAfterStartDocumentReady(extraHtml.getJavascript().toString()); }