0

目前正在将应用程序从 Struts1 迁移到 Struts2。当我单击“提交”按钮时,它给了我一个错误消息“没有为动作名称 requestInput 映射的动作”。我的代码有什么问题导致此错误?

web.xml

<web-app>
    <display-name>My Project</display-name>

    <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>

    <!-- The Usual Welcome File List -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>

struts.xml

<struts>
    <include file="struts-default.xml" />
    <constant name="struts.custom.i18n.resources" value="global" />
    
    <package name="default" namespace="/" extends="struts-default">
        <interceptors>
            <interceptor-stack name="uploadFile">
                <interceptor-ref name="fileUpload" />
                <interceptor-ref name="uploadForm" />
                <interceptor-ref name="modelDriven" />
                <interceptor-ref name="basicStack" />
            </interceptor-stack>
        </interceptors>
        

        <action name="requestInput" class="com.class.action.FileAddAction" method="execute">
            <result>/result.jsp</result>
        </action>


    </package>
</struts>

文件添加.jsp

<s:form method="POST" action="requestInput" enctype="multipart/form-data">
...
<s:submit property="submit" style="background:#dccaa0" value="Submit" theme="simple"/>
...
</s:form>

FileAddAction.jsp

public final class FileAddAction extends ActionSupport implements SessionAware, ServletRequestAware {
...
public String execute() throws Exception{
...
}
}

而且,我的 struts.xml 位于 Java src 文件夹和 WEB-INF 文件夹中。我还能做些什么来解决这个问题?谢谢..

4

1 回答 1

0

两个问题,其他看起来不错。

首要问题:

动作名称="requestInput" 类="com.class.action.FileAddAction" 方法="执行"

你不能用标识符命名你的包class,它不是一个有效的Java标识符


第二个问题:

拦截器引用名称="uploadForm"

什么是“上传表单”?它绝对不是 Struts 2 提供的,请参阅列表

通过以不同的方式命名包并删除interceptor-ref uploadForm,我可以FileAdd.jsp Submit毫无问题地单击该按钮,并且它成功地将我重定向到result.jsp. 我用的是 v2.3.37。


笔记:

  • struts.xml应该在src/main/resources文件夹中(struts.xml 必须在 Web 应用程序的根类路径中)。看看这个
  • web.xml是在src/main/webapp/WEB-INF文件夹下。看看这个
于 2020-06-25T13:17:07.493 回答