There is no Action mapped for namespace / and action
SSI项目,服务器使用的myeclipse9.0自带的tomcat,改了下action跟对应的struts-config.xml,然后重部署、重启tomcat,但是struts-config.xml里面新配置的action动作使用不了,访问显示404,错误代码见下。检查了好几遍,各方面都没问题,拼写也没错,到tomcat的webapp文件夹里面,查看struts-config.xml,发现没有我新增的action动作。之后移除项目再部署、删tomcat的catalina文件夹里的东西都试过了,还是不行,求解。--------------------编程问答-------------------- codemulu
12-11-30@15:19:12 WARN - Could not find action or result
There is no Action mapped for namespace / and action name codemulu. - [unknown location]
at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
at org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:61)
at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39)
at com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58)
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:475)
at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
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:230)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
这个action木有嘛
404的问题都自己找原因 --------------------编程问答-------------------- 发你提交页面和xml action --------------------编程问答-------------------- /codemulu.action
struts xml里没有定义上面这个路径的action
看你表单如何提交的 是相对路径还是绝对路径寻找action --------------------编程问答--------------------
codemulu这个action定义了,xml文件见下面。页面没写,我直接用codemulu.action访问,这个action不需要页面上的参数。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="metadatamanage" namespace="" extends="json-default">
<action name="getallcheck"
class="org.cfsdc.action.manage.MetadataManageAction" method="getAllCheck">
<result name="success">/manage/page/metadatamanage/yuanshujushenhe.jsp</result>
</action>
<action name="getallchecked"
class="org.cfsdc.action.manage.MetadataManageAction" method="getAllChecked">
<result name="success">/manage/page/metadatamanage/shengchenghexinyuanshuju.jsp</result>
</action>
<action name="codemulu"
class="org.cfsdc.action.manage.MetadataManageAction" method="getCodeIndex">
<result name="success">/manage/page/metadatamanage/kexuebianmaguanli.jsp</result>
</action>
</package>
</struts>
顺带说下,里面的getallcheck这个action,我把它改成getallchecks,然后重部署重启tomcat,然后访问getallchecks.action,404,然后我试着访问getallcheck.action,即我修改之前的action,有结果,所以现在怀疑是tomcat的问题,但是tomcat里面的东西我也都清了一遍,还是不行 --------------------编程问答-------------------- 你访问的URL是什么?把namespace加上呢?
404应该是你URL没对 --------------------编程问答--------------------
url也没问题,我访问那个getallcheck.action就能拿到数据,然后我把这个正确的url里面的"getallcheck"换成"codemulu",即我新加的action,404,拼写也应该没问题,因为我试了很多遍了。。
namespace是“” --------------------编程问答--------------------
你确定这里要用的是jsondefault?
就算是json你的配置貌似也不对 --------------------编程问答--------------------
json-deafault应该没问题,因为后面要用到所以先放着。
问题是同一个xml里面,第一个getallcheck能行,为什么第三个不行,两者从形式上来说是一模一样的。。而且为什么第一个都改成getallchecks了,还能访问到getallcheck.action,却访问不到getallchecks.action。。 --------------------编程问答--------------------
缓存啊?你是导出war启动的,还是在eclipse里面?
ctrl+b F5 手动编译下,
tomcat clean下 看看有没有文件不同步的原因 --------------------编程问答-------------------- 你tomcat启动的项目和你现在struts.xml所在的项目不是同一个项目。
貌似你是使用修改server.xml配置文件进行部署的,请检查配置文件Context的docBase
确认docBase是否指向你的项目
--------------------编程问答--------------------
在myeclipse里面。
设置了build automatically,有文件不同步情况,tomcat里面的struts-config.xml里的内容一直是:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
"http://struts.apache.org/dtds/struts-2.1.7.dtd">
<struts>
<package name="metadatamanage" namespace="" extends="json-default">
<action name="getallcheck"
class="org.cfsdc.action.manage.MetadataManageAction" method="getAllCheck">
<result name="success">/manage/page/metadatamanage/yuanshujushenhe.jsp</result>
</action>
<action name="getallchecked"
class="org.cfsdc.action.manage.MetadataManageAction" method="getAllChecked">
<result name="success">/manage/page/metadatamanage/shengchenghexinyuanshuju.jsp</result>
</action>
</package>
</struts>
于是我remove项目,删了tomcat里面的work\Catalina\localhost底下的东西,然后重部署、运行,还是跟之前一样,tomcat里面webapp中项目的WEB-INF\classes\struts-config下的xml里面的内容还是这个 --------------------编程问答--------------------
文件不同步?
你设置下编译路径,刷新
应该就好了 --------------------编程问答-------------------- 右键点击项目,build path ->Configure build path 在弹出的对话框中点击java build path
右侧选择source,查看下面default output folder是否正确 --------------------编程问答--------------------
这是现在的编译路径,应该没问题吧? --------------------编程问答--------------------
事实上3天前我增、改action、xml的时候还一点问题都没,期间的设置我一点都没变,然后昨天我再改的时候不行了。。 --------------------编程问答-------------------- 自顶,求解决方法 --------------------编程问答-------------------- 改这个试试。
<package name="metadatamanage" namespace="/" extends="json-default">
<action name="getallcheck"
class="org.cfsdc.action.manage.MetadataManageAction" method="getAllCheck">
<result name="success">/manage/page/metadatamanage/yuanshujushenhe.jsp</result>
</action>
<action name="getallchecked"
class="org.cfsdc.action.manage.MetadataManageAction" method="getAllChecked">
<result name="success">/manage/page/metadatamanage/shengchenghexinyuanshuju.jsp</result>
</action>
<action name="codemulu"
class="org.cfsdc.action.manage.MetadataManageAction" method="getCodeIndex">
<result name="success">/manage/page/metadatamanage/kexuebianmaguanli.jsp</result>
</action>
</package> --------------------编程问答--------------------
言简意赅 --------------------编程问答-------------------- "到tomcat的webapp文件夹里面,查看struts-config.xml,发现没有我新增的action动作"
那必然404啊,编译过后的xml和你源代码的xml都不一致。
网上下个tomcat用它来编译试试吧
补充:Java , Web 开发