Struts2整理-----异常以及处理

1.There is no result type defined for type 'chart' mapped with name 'success'

在struts2与JFreeChart整合使用时,直接配置如下action

<!-- 图表输出action -->
  <action name="ChartOutputAction" class="chartOutputAction">
   <result name="success" type="chart">
    <param name="height">300</param>
    <param name="width">400</param>
   </result>
  </action>

出现这样的异常:

Caused by: There is no result type defined for type 'chart' mapped with name 'success'.  Did you mean 'chart'? - result - file:/D:/apache-tomcat-7.0.35/webapps/DAQ/WEB-INF/classes/struts.xml:114:40
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.buildResults(XmlConfigurationProvider.java:721)
    at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.addAction(XmlConfigurationProvider.java:435)
    ... 21 more

解决:

在struts2默认的struts-default.xml中,并没有包含chart的result-type,它是插件的形式使用的。

PS:关于result-type详细介绍 http://blog.csdn.net/liyunyun6/article/details/9730505

项目中导入struts2-jfreechart-plugin-2.3.15.1.jar,同时在struts.xml里面增加一个chart的result-type。

     <result-types>
            <result-type name="chart"
                class="org.apache.struts2.dispatcher.ChartResult" />
        </result-types>
        <!-- 图表输出action -->
        <action name="ChartOutputAction" class="chartOutputAction">
            <result name="success" type="chart">
                <param name="height">300</param>
                <param name="width">400</param>
            </result>
        </action>

 

2.struts2 Unable to load configuration. - Class: sun.net.www.http.HttpClient

struts2 启动后台出现这样的错误

File: HttpClient.java
Method: parseHTTPHeader
Line: 772 - sun/net/www/http/HttpClient.java:772:-1
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:898)
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadDocuments(XmlConfigurationProvider.java:143)
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.init(XmlConfigurationProvider.java:110)
 at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:168)
 at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
 ... 16 more
Caused by: Unexpected end of file from server - Class: sun.net.www.http.HttpClient
File: HttpClient.java
Method: parseHTTPHeader
Line: 772 - sun/net/www/http/HttpClient.java:772:-1
 at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115)
 at com.opensymphony.xwork2.config.providers.XmlConfigurationProvider.loadConfigurationFiles(XmlConfigurationProvider.java:893)
 ... 20 more
Caused by: java.net.SocketException: Unexpected end of file from server
 at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:772)
 at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
 at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:769)
 at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:633)
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1323)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:637)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1290)
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1257)
 at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:263)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1164)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1050)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:964)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
 at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:117)
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
 at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
 at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:333)
 at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:113)
 ... 21 more

解决:

struts.xml 和struts-default.xml文件的DOCTYPE不一样, 只需要把struts-default.xml中的doctype代码copy到struts.xml中的,问题即可解决; 

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd">

strtus.xml中使用的dtd是struts-2.1.dtd, 而 struts-default.xml中使用的是struts-2.0.dtd

原文地址:https://www.cnblogs.com/haaron/p/5120674.html