我绝对是Struts2的初学者.我想跟随struts网站上的教程.我按照本教程.我有点麻烦.我在eclipse上创建了动态web项目.然后我按照教程.但是,当我运行该示例时,我收到以下错误.
There is no Action mapped for namespace [/] and action name [hello] associated with context path [/Hello_World_Struts_2]. - [unknown location]
Run Code Online (Sandbox Code Playgroud)
我有以下目录结构

我的struts.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.devMode" value="true" />
<package name="basicstruts2" extends="struts-default" namespace="/">
<action name="index">
<result>/index.jsp</result>
</action>
<action name="hello" class="org.apache.struts.helloworld.action.HelloWorldAction" method="execute">
<result name="SUCCESS">/HelloWorld.jsp</result>
</action>
</package>
</struts>
Run Code Online (Sandbox Code Playgroud)
谢谢你的回复.
我们已经在Struts 2.1.8上运行了一段时间,并且所有Struts操作都按预期工作,即strref操作的href是使用没有扩展名的操作名称呈现的.
以下是设置链接的JSP代码:
<ul id="top_menu">
<li id="itemHome" class="active"><s:a action="viewHome">Home</s:a></li>
<li><s:a action="viewSearch">Search</s:a></li>
<li><s:a action="viewBookMarks">My Bookmarks</s:a></li>
<li><s:a action="viewSupport">Support</s:a></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
正确地呈现给链接http://localhost/viewHome,http://localhost/viewSearch2.1.8下,等等.
我们刚刚升级到2.2.1的Struts(一个已检查从这个高达v2.3.4.1所有版本)和现在看到的Struts动作链接被渲染为http://localhost/viewHome.action,http://localhost/viewSearch.action等等.
我的研究表明,一般建议的解决方案是使用
<constant name="struts.action.extension" value=""/>
Run Code Online (Sandbox Code Playgroud)
在struts.xml中删除.action后缀.虽然这会使URL正确呈现,但却会导致意外的副作用.Struts现在认为每个URL都是一个动作,包括对.css,.png等的请求.
我在web.xml中的过滤器映射没有改变.虽然它向/ Struts发送/*但我们在2.1.8下没有看到这种行为
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)
为了抵消这一点,我必须使用excludePattern来阻止Struts尝试将这些请求视为操作.
<constant name="struts.action.excludePattern" value="/index.html,/images/.*,/js/.*,/css/.*"/>
Run Code Online (Sandbox Code Playgroud)
虽然这有效,但最后一个障碍是我的日志充满了Struts标记请求的错误,这些请求正在作为Struts操作处理.当我将这些URI添加到排除模式时,Struts Dojo标记似乎在某些页面中不起作用.
受影响的struts.xml部分是:
<constant name="struts.devMode" value="true" />
<!-- Set URL's to have no .action extension -->
<constant name="struts.action.extension" value=""/>
<constant name="struts.action.excludePattern" value="/index.html,/images/.*,/js/.*,/css/.*"/>
Run Code Online (Sandbox Code Playgroud)
而日志中Struts错误的一个例子是:
2012-09-26 17:12:57,984 [http-bio-8080-exec-9] ERROR org.apache.struts2.dispatcher.Dispatcher- Could not find action …Run Code Online (Sandbox Code Playgroud) 我有一个使用Struts2,Spring和JPA的Web应用程序.在应用程序中,我们正在使用注释.当我们在eclipse中部署应用程序时,如果我们将其部署为虚拟应用程序(右键单击服务器,选择属性,选择WebLogic,选择发布模式),应用程序运行正常.此选项生成_auto_generated_ear文件并运行应用程序. 当我将其部署为展开的归档文件或通过管理控制台手动将应用程序部署为.war文件时,我收到以下错误消息:
[[ACTIVE] ExecuteThread:'8'表示队列:'weblogic.kernel.Default(self-tuning)'] WARN org.apache.struts2.dispatcher.Dispatcher - 找不到操作或结果:/eServices/login.action There没有映射名称空间[/]的动作和与上下文路径[/ eServices]关联的动作名称[登录]. - com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)中的[未知位置]位于org.apache.struts2.impl上的org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63).位于org.apache的org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552)的com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)中的StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)位于weblogic.servlet.internal.FilterChainImpl.doFilter的org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)中的.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) (FilterChainImpl.java:56)位于oracle.security.jps.util的java.security.AccessController.doPrivileged(Native Method)的oracle.security.jps.ee.http.JpsAbsFilter $ 1.run(JpsAbsFilter.java:111). oracle.security.jps中的JpsSubject.doAsPrivileged(JpsSubject.java:313)位于oracle.security.jps.ee.http.JpsAbsFilter.doFilter的oracle.security.jps.ee.http.JpsAbsFilter.runJaasMode(JpsAbsFilter.java:94)中的.ee.util.JpsPlatformUtil.runJaasMode(JpsPlatformUtil.java:413) (JpsAbsFilter.java:161)位于oracle.dms的weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56)的oracle.security.jps.ee.http.JpsFilter.doFilter(JpsFilter.java:71). servlog.DMSServletFilter.doFilter(DMSServletFilter.java:136)位于weblogic.servome.servial.Web上的weblogic.servlet.inperi.WebAppServletContext $ ServletInvocationAction.wrapRun(WebAppServletContext.java:3715)的weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:56) .loglet.internal.WebAppServletContext $ ServletInvocationAction.run(WebAppServletContext.java:3681)at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)at weblogic.security.service.SecurityManager.runAs(SecurityManager.java) :120)at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.jav)a:2277)weblogic.servlet.internal.WebAppServletContext.exe(WebAppServletContext.java:2183)at weblogic.servlet.invine.ServletRequestImpl.run(ServletRequestImpl.java:1454)at weblogic.work.ExecuteThread.execute(ExecuteThread.java) :209)at weblogic.work.ExecuteThread.run(ExecuteThread.java:178)
任何WebLogic专家都能指出我正确的方向吗?在WebLogic中运行的Struts2的Convention-plugin是否存在问题?任何帮助将不胜感激.提前致谢.
更新:
web.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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
id="WebApp_ID" version="3.0">
<display-name>eServices</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Needed to manage the Java based @Configuration classes for Spring -->
<context-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.ceiwc.es.config</param-value>
</context-param>
<!-- …Run Code Online (Sandbox Code Playgroud) 我正进入(状态:
com.opensymphony.xwork2.util.logging.commons.CommonsLogger 警告 找不到操作或结果 与上下文路径 [/] 关联的命名空间 [/] 和操作名称 [] 没有映射的操作。- [未知地点]
我使用 RAD + WebSphere 的组合进行开发,代码如下:
struts.xml:
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default" namespace="/">
Run Code Online (Sandbox Code Playgroud)
网页.xml:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>Login.jsp</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
我已阅读所有博客并尝试了网站上提到的所有内容。由于某些不同的原因,我无法找到这是一个错误。
如果我.action在Struts2应用程序中删除扩展,我有一个问题.我把它放在我的struts.xml:
<constant
name="struts.action.extension"
value="" />
Run Code Online (Sandbox Code Playgroud)
除索引页面外,应用程序正常工作.我有web.xml这个:
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
当我访问时http://localhost/myApp/,我收到以下错误:
There is no Action mapped for namespace [/] and
action name [index.jsp] associated with context path [/myApp].
- [unknown location]
Run Code Online (Sandbox Code Playgroud)
但是,如果我访问http://localhost/myApp/fooAction,我没有得到任何错误,并且工作完美.
如果我更改非空扩展的扩展名(例如"html"),如果我访问,我会完全看到索引页面http://localhost/myApp/.
那么,我正在做的事情有什么不对吗?删除扩展程序时,为什么会出现此错误?有没有可行的方法没有得到它?
编辑:如果我<welcome-page>在错误中放置一个动作如下:
There is no Action mapped for namespace [/] and action name []
associated with context path [/myApp].
Run Code Online (Sandbox Code Playgroud) 我是 Struts 2 的新手,我一直在关注 Struts 2(Koushik) 的视频教程。我已经创建了 Struts.xml、动作类和 JSP,与教程中创建的一样。但它给出了以下例外。
例外:
Jan 13, 2014 9:30:48 PM org.apache.struts2.dispatcher.Dispatcher warn
WARNING: Could not find action or result: /Struts2Starter/getTutorial.action
There is no Action mapped for namespace [/] and action name [getTutorial] associated with context path [/Struts2Starter]. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:552)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at …Run Code Online (Sandbox Code Playgroud) 目前我在我的项目中使用 Struts 2.3.12,一切正常。现在我需要将 Struts 版本升级到 2.3.20 以解决一些安全问题。
我在我的项目中将 Struts 和所需的 Struts 插件版本更改为 2.3.20pom.xml并构建项目战争。现在,我正在尝试访问我的应用程序主页 URL,然后出现以下异常:
没有为与上下文路径关联的命名空间
[/web/public]和操作名称映射的操作。- [未知地点][reset-password!reset][/ims]
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
org.josso.tc55.agent.SSOAgentValve.invoke(SSOAgentValve.java:472)
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875)
org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
java.lang.Thread.run(Thread.java:662)
Run Code Online (Sandbox Code Playgroud)
我对正在发生的事情一无所知。
我查看了 struts 2.3.20 的发行说明,但没有得到任何提示。
我正在使用strust2-convention-plugin.
我正在分享我的web.xml和struts.xml文件。它看起来如下所示:
web.xml:
com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185)
org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63)
org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:37)
com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:554)
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:81)
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:99)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) …Run Code Online (Sandbox Code Playgroud) 我已经查看了stackoverflow上所有类似的Q,但它没有帮助,抱歉.我与他们所有人的主要区别在于我在错误消息中获得了EMPTY操作名称.谷歌搜索没有帮助:(希望有人可以提示在哪里寻找问题的根源.周围
Error:
HTTP Status 404 - There is no Action mapped for namespace [/] and action name [] associated with context path [/LoginApplication].
--------------------------------------------------------------------------------
type Status report
message There is no Action mapped for namespace [/] and action name [] associated with context path [/LoginApplication].
description The requested resource (There is no Action mapped for namespace [/] and action name [] associated with context path [/LoginApplication].) is not available.
WARNING: Could not find action or result: /LoginApplication/
There is no …Run Code Online (Sandbox Code Playgroud)