1

我正在使用 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] 映射的操作。

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

4

1 回答 1

1

您应该向包中添加一个命名空间,例如namespace="/". 但是,如果您想坚持使用namespace=""(这可能会产生问题和/或无人看管的结果),您可以尝试以以下形式指定它:

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

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

在此处输入图像描述

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

于 2014-04-07T09:08:51.530 回答