簡體   English   中英

Seam以Excel格式導出數據表

[英]Seam Export Datatable in Excel format

我正在嘗試使用seam並按照http://docs.jboss.org/seam/2.1.0.GA/reference/en-US/html/excel.html#excel.intro將Richdata表導出到excel

它指示“要在您的應用程序中包含Microsoft®Excel®電子表格應用程序支持,請將jboss-seam-excel.jar與jxl.jar JAR文件一起包含在WEB-INF / lib目錄中。”

我在網上找到了以下兩個罐子的依賴關系。

戰爭pom.xml

<dependency>
    <groupId>org.jboss.seam</groupId>
    <artifactId>jboss-seam-excel</artifactId>
    <version>2.2.0.GA</version>
</dependency>
<dependency>
    <groupId>net.sourceforge.jexcelapi</groupId>
    <artifactId>jxl</artifactId>
    <version>2.6.12</version>
</dependency>

web.xml

    <servlet>
      <servlet-name>Document Store Servlet</servlet-name>
      <servlet-class>org.jboss.seam.document.DocumentStoreServlet</servlet-class>
   </servlet>

   <servlet-mapping>
      <servlet-name>Document Store Servlet</servlet-name>
      <url-pattern>*.xls</url-pattern>
   </servlet-mapping>

   <context-param>
     <param-name>webAppRootKey</param-name>
     <param-value>seam-excel</param-value>
   </context-param>

Components.xml

<components
        xmlns:excel="http://jboss.com/products/seam/excel"
        xmlns:document="http://jboss.com/products/seam/document"

         http://jboss.com/products/seam/excel http://jboss.com/products/seam/excel-2.1.xsd
         http://jboss.com/products/seam/document http://jboss.com/products/seam/document-2.1.xsd">

        <excel:document-store use-extensions="true"/>
        <document:document-store use-extensions="true"/>
</components>

之前我在components.xml中也包含以下內容

<excel:excelFactory>
   <property name="implementations">
      <key>myExcelExporter</key>
      <value>my.excel.exporter.ExcelExport</value>
   </property>
</excel:excelFactory>

這導致了部署異常,也沒有人在他們的代碼中提到它,我擺脫了這一點,也沒有部署異常。

jboss-seam-excel-2.1.2.jarjxl-2.6.12.jar部署在WEB-INF / lib下

但是,我在任何地方都找不到.. org.jboss.seam.excel.DocumentStoreServlet ,因此在web.xml中使用org.jboss.seam.document.DocumentStoreServlet

但是,我在登錄時發現屬性未找到異常,下面是完整的錯誤堆棧跟蹤。.loginAction.stationID與我的更改無關...

17:04:24,934 |WARNING|  [lifecycle:81] /login.xhtml @52,138 value="#{loginAction.stationID}": Target Unreachable, identifier 'loginAction' resolved to null |||| 
javax.el.PropertyNotFoundException: /login.xhtml @52,138 value="#{loginAction.stationID}": Target Unreachable, identifier 'loginAction' resolved to null
    at com.sun.facelets.el.TagValueExpression.getType(TagValueExpression.java:62)
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:92)
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:942)
    at javax.faces.component.UIInput.validate(UIInput.java:868)
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1072)
    at javax.faces.component.UIInput.processValidators(UIInput.java:672)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
    at javax.faces.component.UIForm.processValidators(UIForm.java:235)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1058)
    at org.ajax4jsf.component.AjaxViewRoot$3.invokeContextCallback(AjaxViewRoot.java:439)
    at org.ajax4jsf.component.AjaxViewRoot.processPhase(AjaxViewRoot.java:238)
    at org.ajax4jsf.component.AjaxViewRoot.processValidators(AjaxViewRoot.java:455)
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:510)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.billmelater.csa.filters.NewSessionFilter.doFilter(NewSessionFilter.java:89)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at com.billmelater.csa.filters.Perf4JFilter.doFilter(Perf4JFilter.java:53)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
    at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
    at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
    at org.jboss.seam.web.Ajax4jsfFilter.doFilter(Ajax4jsfFilter.java:56)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60)
    at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
    at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
    at java.lang.Thread.run(Thread.java:680)
17:04:24,942 |SEVERE|  [lifecycle:104] JSF1054: (Phase ID: PROCESS_VALIDATIONS 3, View ID: /login.xhtml) Exception thrown during phase execution: javax.faces.event.PhaseEvent[source=com.sun.faces.lifecycle.LifecycleImpl@42a46d79] |||| 

Deployment Exception : Could not create Component: org.jboss.seam.excel.excelFactory
**Could not create Component: org.jboss.seam.excel.excelFactory** 

當我添加接縫Excel依賴項時,發生PropertyNotFoundException。

我的依賴關系樹看到這個.. mvn dependency:tree ,發現這個..

[INFO] +- org.jboss.seam:jboss-seam-excel:jar:2.2.0.GA:compile
[INFO] |  \- org.jboss.seam:jboss-seam:ejb:2.2.0.GA:compile
[INFO] |     +- xstream:xstream:jar:1.1.3:compile
[INFO] |     +- xpp3:xpp3_min:jar:1.1.3.4.O:compile
[INFO] |     \- org.jboss.el:jboss-el:jar:1.0_02.CR4:compile
[INFO] +- net.sourceforge.jexcelapi:jxl:jar:2.6.12:compile`

excel jar附帶了jboss-seam ejb和jboss-el等。我認為org.jboss.el:jboss-el已經與我項目中的一個碰撞了。..jboss-seam:ejb:2.2.0 .GA ..,嘗試將以下排除項放入Maven ..中,但也可以工作。

   <dependency>
        <groupId>org.jboss.seam</groupId>
        <artifactId>jboss-seam-excel</artifactId>
        <version>2.2.0.GA</version>
        <exclusions>
            <exclusion>
                <groupId>ejb</groupId>
                <artifactId>ejb</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.el</groupId>
                <artifactId>el-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

您正在使用哪個JBoss版本? 我假設是JBoss 5

檢查此參考: https : //community.jboss.org/thread/186791

這是較舊的版本,但也有幫助:

https://community.jboss.org/thread/184757

由於我現在無法訪問代碼,因此我在下面剪切並粘貼了代碼,但是如果不正確,它將關閉。 您需要在web.xml中有一個參考

<servlet-name>Document Store Servlet Excel</servlet-name>
<servlet-class>org.jboss.seam.excel.DocumentStoreServlet</servlet-class>


<servlet-mapping>
<servlet-name>Document Store Servlet Excel</servlet-name>
<url-pattern>*.xls</url-pattern>
</servlet-mapping>


<context-param>
<param-name>webAppRootKey</param-name>
<param-value>seam-excel</param-value>
</context-param> 

jboss-web.xml

<jboss-web>
<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
seam.jboss.org:loader=seam-excel
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>
</jboss-web>

和components.xml

<components xmlns:excel="http://jboss.com/products/seam/excel"
xmlns:document="http://jboss.com/products/seam/document"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://jboss.com/products/seam/document http://jboss.com/products/seam/document-2.1.xsd
http://jboss.com/products/seam/excel http://jboss.com/products/seam/excel-2.1.xsd">

<document:document-store use-extensions="true"></document:document-store>

</components>

正如我所想,我沒有適當地排除依賴項,並且它們正在與其他依賴項發生沖突。

這是正確的版本...

<dependency>
    <groupId>org.jboss.seam</groupId>
    <artifactId>jboss-seam-excel</artifactId>
    <version>2.2.0.GA</version>
    <exclusions>
        <exclusion>
            <groupId>org.jboss.seam</groupId>
            <artifactId>jboss-seam</artifactId>
         </exclusion>
        <exclusion>
             <groupId>org.jboss.el</groupId>
             <artifactId>jboss-el</artifactId>
          </exclusion>
    </exclusions>
</dependency>

希望這對將來有幫助。 我必須說這個功能的文檔非常少,而且必須去幾個論壇才能知道到底需要什么。 我將停止使用POI方法來導出excel :)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM