获取404没有映射名称空间错误的Action

时间:2014-04-06 14:37:16

标签: tomcat struts2 struts2-namespace action-mapping

我正在使用Struts2 Web应用程序。一切都运行良好。所有操作都已正确映射,应用程序正确重定向到页面。但是,当我为这个特定模块(与文件上传相关)执行相同操作时,它只是失败!我不明白什么是错的,我已经尝试了各种组合" /"而且我仍然无法让页面重新指向。我做错了什么?

我的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">
     -->
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" 
    "http://struts.apache.org/dtds/struts-2.1.dtd">


<struts>
    <constant name="struts.enable.DynamicMethodInvocation"
        value="false" />
    <constant name="struts.devMode" value="false" />
    <constant name="struts.custom.i18n.resources"
        value="ApplicationResources" />

    <package name="default" extends="struts-default" namespace="">
        <action name="login" class="com.proconsulto.action.LoginAction" method="execute">
            <result name="success">/Dashboard.jsp</result>
            <result name="failure">/SignIn.jsp</result>
           </action>

           <action name="signup" class="com.proconsulto.action.UserAction" method="addUser">
            <result name="success">/Dashboard.jsp</result>
            <result name="failure">/SignIn.jsp</result>
           </action>

            <action name="logout" class="com.proconsulto.action.LoginAction" method="logout">
            <result name="success">/SignIn.jsp</result>
            </action>

           <action name="placerequest" class="com.proconsulto.action.PlaceRequestAction" method="placeRequest">
           <result name="success">/Success.jsp</result>
           </action>

    </package>
</struts>

以及应该重定向的表单:

<s:form theme="simple" action="placerequest.action" enctype="multipart/form-data" method="post">
            <ul style="list-style-type:none;">
            <li class="field"><p id="qaz">Headline : <br/><s:textfield style="width:550px;align:center;display:inline;" name="headline" cssClass="text input"></s:textfield></li>
            <li class="field"><p id="qaz">Description :<br/> <s:textarea style="width:550px;display:inline;align:center;" name="description" cssClass="textarea input"></s:textarea></li>
            <li class="field"><p id="qaz">File Upload (if any) :<br/> <s:file style="height:auto;width:550px;display:inline;align:center;" name="userImage" cssClass="text input" /></li>
            <div class="medium default btn"><s:submit value="Proceed"/></div>&nbsp;&nbsp;
            <div class="medium default btn"><s:reset value="Reset"/></div>

placerequest是刚刚赢得映射的动作!

请帮忙。

完整的错误消息:

  

输入状态报告

     

消息没有映射名称空间[/]的动作和与上下文路径[/ ProConsulto]相关联的动作名称[placerequest]。

     

description所请求的资源(没有映射名称空间[/]的动作和与上下文关联的动作名称[placerequest]   路径[/ ProConsulto]。)不可用。

1 个答案:

答案 0 :(得分:1)

您应该为包添加名称空间,例如namespace="/"。但是如果你想坚持namespace=""(可能会产生问题和/或无人看管的结果),你可以尝试在表单中指定它:

<s:form action="placerequest.action" namespace="" ... >

此外,仅出于测试目的,在项目中包含Struts2 Config Browser plugin,以查看操作的映射方式(使用左侧菜单浏览它们)。

enter image description here

请记住在发布到生产之前将其删除;)