当前位置:编程学习 > JAVA >>

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文件夹里的东西都试过了,还是不行,求解。

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)

--------------------编程问答-------------------- codemulu
这个action木有嘛
404的问题都自己找原因 --------------------编程问答-------------------- 发你提交页面和xml action --------------------编程问答-------------------- /codemulu.action

struts xml里没有定义上面这个路径的action

看你表单如何提交的  是相对路径还是绝对路径寻找action --------------------编程问答--------------------
引用 2 楼 cydyhty 的回复:
发你提交页面和xml 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没对 --------------------编程问答--------------------
引用 5 楼 cydyhty 的回复:
你访问的URL是什么?把namespace加上呢?
404应该是你URL没对

url也没问题,我访问那个getallcheck.action就能拿到数据,然后我把这个正确的url里面的"getallcheck"换成"codemulu",即我新加的action,404,拼写也应该没问题,因为我试了很多遍了。。
namespace是“” --------------------编程问答--------------------
引用 6 楼 rikimura2 的回复:
引用 5 楼 cydyhty 的回复:你访问的URL是什么?把namespace加上呢?
404应该是你URL没对
url也没问题,我访问那个getallcheck.action就能拿到数据,然后我把这个正确的url里面的"getallcheck"换成"codemulu",即我新加的action,404,拼写也应该没问题,因为我试了很多遍了。。
namespace是……

你确定这里要用的是jsondefault?
就算是json你的配置貌似也不对 --------------------编程问答--------------------
引用 7 楼 cydyhty 的回复:
引用 6 楼 rikimura2 的回复:引用 5 楼 cydyhty 的回复:你访问的URL是什么?把namespace加上呢?
404应该是你URL没对
url也没问题,我访问那个getallcheck.action就能拿到数据,然后我把这个正确的url里面的"getallcheck"换成"codemulu",即我新加的action,404,拼写也应该没问题,因为……

json-deafault应该没问题,因为后面要用到所以先放着。
问题是同一个xml里面,第一个getallcheck能行,为什么第三个不行,两者从形式上来说是一模一样的。。而且为什么第一个都改成getallchecks了,还能访问到getallcheck.action,却访问不到getallchecks.action。。 --------------------编程问答--------------------
引用 8 楼 rikimura2 的回复:
引用 7 楼 cydyhty 的回复:引用 6 楼 rikimura2 的回复:引用 5 楼 cydyhty 的回复:你访问的URL是什么?把namespace加上呢?
404应该是你URL没对
url也没问题,我访问那个getallcheck.action就能拿到数据,然后我把这个正确的url里面的"getallcheck"换成"codemulu",即我新加的act……

缓存啊?你是导出war启动的,还是在eclipse里面?
ctrl+b  F5 手动编译下,
tomcat clean下 看看有没有文件不同步的原因 --------------------编程问答-------------------- 你tomcat启动的项目和你现在struts.xml所在的项目不是同一个项目。
貌似你是使用修改server.xml配置文件进行部署的,请检查配置文件Context的docBase
确认docBase是否指向你的项目
--------------------编程问答--------------------
引用 9 楼 cydyhty 的回复:
引用 8 楼 rikimura2 的回复:引用 7 楼 cydyhty 的回复:引用 6 楼 rikimura2 的回复:引用 5 楼 cydyhty 的回复:你访问的URL是什么?把namespace加上呢?
404应该是你URL没对
url也没问题,我访问那个getallcheck.action就能拿到数据,然后我把这个正确的url里面的"getallcheck"……

在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是否正确 --------------------编程问答--------------------
这是现在的编译路径,应该没问题吧? --------------------编程问答--------------------
引用 13 楼 WXLHATYY 的回复:
右键点击项目,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> --------------------编程问答--------------------
引用 3 楼 sd4000784 的回复:
/codemulu.action

struts xml里没有定义上面这个路径的action

看你表单如何提交的  是相对路径还是绝对路径寻找action


言简意赅 --------------------编程问答-------------------- "到tomcat的webapp文件夹里面,查看struts-config.xml,发现没有我新增的action动作"
那必然404啊,编译过后的xml和你源代码的xml都不一致。
网上下个tomcat用它来编译试试吧 
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,