primefaces dataexporter打印html和EL表达式结构而不是表中的数据

J.B*_*.B. 3 datatable jsf primefaces

我想用数据导出器打印一份简单的报告,但我打印的是结构而不是数据,任何格式(xsl、csv、pdf)都有同样的问题。我得到的行数和名称列是正确的,除了表中的数据。

\n\n

浏览器抛出此警告:\n资源解释为文档,但使用 MIME 类型 text/csv 传输:“ http://localhost:8081/prueba2/faces/views/usrManagement.xhtml ”。

\n\n

这是我的代码:

\n\n
<p:dataTable id="userTable" \n      value="#{userManagementBean.lazyModel}"\n      var="user" emptyMessage="No se encontraron registros"\n      tableStyle="table-layout:auto;" reflow="true"\n      paginator="true" rows="5" lazy="true"\n      paginatorTemplate="{RowsPerPageDropdown}{FirstPageLink}\n                         {PreviousPageLink}{PageLinks}\n                         {NextPageLink}{LastPageLink}">                      \n\n      <f:facet name="header">\n        Usuarios\n      </f:facet>\n      <p:column exportable="false">\n         <f:facet name="header">Acciones</f:facet>\n\n         <p:commandLink class="btn-floating\n                 waves-effect waves-light blue"\n                 action="#{userManagementBean.chosenUsr(user)}"\n                 onsuccess="$(\'#CRUDModal\').modal(\'open\');"\n                 update="modalForm"><i class="fa fa-edit"></i>  \n        </p:commandLink>               \n     </p:column>\n     <p:column>\n       <f:facet name="header">Clave de usuario</f:facet>\n          #{user.aliasVarc}\n     </p:column>\n\n     <p:column>\n        <f:facet name="header">N\xc3\xbamero de empleado</f:facet>\n          #{user.codEmployeeInt}\n     </p:column>\n\n     <p:column>\n        <f:facet name="header">Nombre</f:facet>\n          #{user.nameVarc}\n     </p:column>\n\n     <p:column>\n        <f:facet name="header">A paterno</f:facet>\n          #{user.lastNameVarc}\n     </p:column>\n     <p:column>\n        <f:facet name="header">Activo</f:facet> \n        <h:selectBooleanCheckbox value="#{user.isActiveBit}" />\n        <label></label>\n\n     </p:column>\n\n</p:dataTable>\n</div>\n</div>\n<div class="row"></div>\n\n</div>\n</div>\n</div>\n<div class="row" style="margin-bottom: -1px;">\n<div class="fixed-action-btn ">\n<a class="btn-floating btn-large amber accent-3">\n  <i class="fa fa-ellipsis-h"></i>\n</a>\n<ul>\n  <li><a class="btn-floating blue lighten-3"><i class="fa fa-file-text-o">\n</i></a></li>\n  <li><a class="btn-floating red darken-1"><i class="fa fa-file-pdf-o"></i>\n</a></li>\n\n<li>\n   <h:commandLink class="btn-floating green darken-3">\n   <p:dataExporter type="pdf" target="userTable" fileName="reporte" \n          pageOnly="false" />\n      <i class="fa fa-file-excel-o">\n      </i></h:commandLink>\n  </li>\n\n  <li><p:commandLink class="btn-floating  blue waves-effect waves-light"\n                     action="#{userManagementBean.newUser()}"\n                     onsuccess="$(\'#CRUDModal\').modal(\'open\');"\n                     update="modalForm">\n      <i class="fa fa-plus"></i>\n      </p:commandLink></li>\n\n</ul>\n</div>          \n</div>        \n
Run Code Online (Sandbox Code Playgroud)\n\n

\n\n

这是托管 bean:

\n\n
@ManagedBean\n@ViewScoped\npublic class UserManagementBean implements Serializable{\nstatic final long serialVersionUID = 1L;\n\nprivate String userName;\nprivate List<Usrs> liUsrs;\nprivate Usrs selectedUsr;\nprivate boolean deleteBtnRendered;\nprivate LazyDataModel<Usrs> lazyModel;\nprivate HashMap<String,Object> params;\nprivate int paginator;\n\n\n\n\n@PostConstruct\npublic void initMethod() {\n\n    selectedUsr = new Usrs();\n}\n\npublic String getUserName() {\n    return userName;\n}\n\npublic void setUserName(String userName) {\n    this.userName = userName;\n}\n\npublic List<Usrs> getLiUsrs() {\n    return liUsrs;\n}\n\npublic void setLiUsrs(List<Usrs> liUsrs) {\n    this.liUsrs = liUsrs;\n}\n\npublic Usrs getSelectedUsr() {\n    return selectedUsr;\n}\n\npublic void setSelectedUsr(Usrs selectedUsr) {\n    this.selectedUsr = selectedUsr;\n    System.out.println("alias"+selectedUsr.getAliasVarc());\n}\n\npublic boolean isDeleteBtnRendered() {\n    return deleteBtnRendered;\n}\n\npublic void setDeleteBtnRendered(boolean deleteBtnRendered) {\n    this.deleteBtnRendered = deleteBtnRendered;\n}\n\npublic LazyDataModel<Usrs> getLazyModel() {\n\n    return lazyModel;\n}\n\npublic int getPaginator() {\n    return paginator;\n}\n\npublic void setPaginator(int paginator) {\n    this.paginator = paginator;\n}\n\npublic void chosenUsr(Usrs selected){\n    selectedUsr = selected;\n    deleteBtnRendered = true;\n}\n\npublic void callSearchProcess(){\n    params = new HashMap<>();\n    params.put("aliasVarc", userName);\n\n    DataTable dataTable = (DataTable) FacesContext.getCurrentInstance().\n                           getViewRoot().\n                           findComponent("searchForm:userTable");\n    dataTable.reset(); \n    lazyModel = new LazyUserList(params);\n}\n\npublic void callInUpProcess(){\n    new UserManagementController(this).mergeUser();\n    selectedUsr = new Usrs();\n}\npublic void callDeleteProcess(){\n    new UserManagementController(this).deleteUser();\n    selectedUsr = new Usrs();\n}\npublic void newUser(){\n     selectedUsr = new Usrs();\n     deleteBtnRendered = false;\n}\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是pdf 格式的结果\n 结果

\n\n

[csv 格式][2]

\n

Kuk*_*tje 5

PF dataexporter 只知道如何导出简单的“数据”。它不是 html 导出器。所以这<label>不起作用是“设计使然”。对于其他 EL,您需要像这样使用它们:

<h:outputText value=" #{user.lastNameVarc}" />
Run Code Online (Sandbox Code Playgroud)

那么它肯定会起作用