2014-04-18 27 views
0

错误出现,如:Struts的调度员无法找到

Struts的调度员无法找到。这通常是由于使用没有关联过滤器的Struts标签造成的。 Struts标签只有在请求通过其servlet过滤器时才可用,该过滤器初始化此标签所需的Struts调度器。

MY struts.xml的

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 

    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
id="WebApp_ID" version="2.5"> 

<display-name>Struts2 Login</display-name> 

<filter> 
    <filter-name>struts2</filter-name> 
    <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>struts2</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

我的web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
    "http://struts.apache.org/dtds/struts-2.0.dtd"> 
<struts> 
<constant name="struts.action.excludePattern" value="/ServletToExcludeFromStruts*" /> 
<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 
<constant name="struts.devMode" value="true" /> 
<package name="helloworld" extends="struts-default"> 

    <action name="hello" class="com.struts.action.HelloWorldAction" 
     method="execute"> 
     <result name="success">/HelloWorld.jsp</result> 
    </action> 
    </package> 
</struts> 

和所需的jar文件... [纠正我,如果我错了]

commons-logging-1.0.4.jar 
freemarker-2.3.8.jar 
ognl-2.6.11.jar 
struts2-core-2.0.11.jar 
xwork-2.0.4.jar 
commons-collections-3.0.jar 
commons-fileupload-1.2.1.jar 
commons-lang-2.4.jar 
commons-io-1.3.2.jar 
javassist-3.0.jar 

回答

2

你的web.xml和struts.xml很好。

的罐子版本略有不同,从the required dependencies for Struts 2.0

xwork应为2.0。 ,commons-io应该是1. 等等。

顺便说一句,因为它似乎你今天开始一个新的Struts2的项目,我强烈建议你先从最新的Struts2库至少以下几个原因:

  1. 是绝对没有一个理由使用6年的图书馆;如果你的公司有这个规则,那么就和你的老板争吵,改变这个规则,尤其是对于下面的争论;
  2. 2.3.15.3之前的Struts2版本受到serious security bug;在Struts2-Dojo和前面提到的FilterDispatcher(因为Struts 2.1.3,你必须使用新的过滤器,也就是说,Struts2已经在功能,效率,速度,错误修正等方面进化了很多, StrutsPrepareAndExecuteFilter,如写在FilterDispatcher documentation
  3. 随着新Struts2的版本,你可以使用新的插件在那里,这将实际值添加到您的Web应用程序,特别是:

然后与Maven开始使用最新的库(目前2.3.16.1)一个新的项目,preferibly,或通过手动关注the required dependencies and their versions

Download a Release of Apache Struts

+0

现在我改变jar文件,然后异常就这样产生 ** org.apache.jasper.JasperException:javax.servlet.ServletException:java.lang.NoClassDefFoundError: COM/OpenSymphony的/ xwork2 /配置/ ContainerProvider ** –

0

我想,让你交换了两个文件(在struts.xml和web.xml)的内容,这就是为什么你得到这个错误。