【问题标题】:There is no Action mapped for namespace [/] and action name [viewBooks] associated with context path [/SampleTC_test]. - [unknown location]没有为与上下文路径 [/SampleTC_test] 关联的命名空间 [/] 和操作名称 [viewBooks] 映射的操作。 - [未知位置]
【发布时间】:2016-02-15 02:12:19
【问题描述】:

我知道还有其他几个线程存在相同的错误,但相信我,它们都没有帮助我解决我的问题。

我有一个使用 Struts2 版本 struts-2.3.16 和 Hibernate 基于 Java 构建的 Web 应用程序。

我的问题是,在我的应用程序中,我有 struts.xml,因为它很大,我将它分成三个 xml 文件。一个是主 struts.xml,它包含两个包含标签,指向同一应用程序的两个不同的 strtus-XXX.xml 文件。我的问题是只有一个 struts-XXX.xml 正在工作,而我在第二个 xml 文件中编写的任何操作都不起作用。如果我的应用程序试图指出第二个 xml 文件中提到的任何“操作”,则它不会被识别。

这是我的

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">
<struts>
    <constant name="struts.enable.DynamicMethodInvocation"
        value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources"
        value="ApplicationResources" />


    <include file="struts/struts-codeGroup.xml"/>
    <include file="struts/struts-book.xml"/>
</struts>

struts-codeGroup.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">
<struts>
    <constant name="struts.convention.result.path" value="/WEB-INF/"/>
    <constant name="struts.enable.DynamicMethodInvocation"
        value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources"
        value="ApplicationResources" />

    <package name="default" namespace="/" extends="struts-default">

    <action name="viewCodeValues"   class="com.hibernate.action.CodeValuesAction">
            <result name="success">/ViewCodeValues.jsp</result>
        </action>

    </package>
</struts>

struts-book.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">
<struts>
    <constant name="struts.convention.result.path" value="/WEB-INF/"/>
    <constant name="struts.enable.DynamicMethodInvocation"
        value="false" />
    <constant name="struts.devMode" value="true" />
    <constant name="struts.custom.i18n.resources"
        value="ApplicationResources" />

    <package name="default" namespace="/" extends="struts-default">


        <action name="viewBooks" class="com.hibernate.action.BookAction" method="viewBooks">
            <result name="success">/viewBooks.jsp</result>
        </action>    
    </package>
</struts>

使用 struts-codeGroup.xml 包含标签工作正常,但 struts-book.xml 中的操作根本不起作用,并给我错误

没有为命名空间 [/] 和与上下文路径 [/SampleTC_test] 关联的操作名称 [viewBooks] 映射的操作。 - [未知位置]

【问题讨论】:

    标签: java configuration struts2 struts-action action-mapping


    【解决方案1】:

    你不能有两个同名的包。使用类似的东西

    <package name="default1" namespace="/" extends="struts-default">
       <!-- ... -->
    </package>
    
    <package name="default2" namespace="/" extends="struts-default">
       <!-- ... -->
    </package>
    

    顺便说一句,避免巨大的 struts.xml 文件的最佳方法是使用Convention plugin
    考虑至少在下一个项目中使用它。

    【讨论】:

    • 天哪。遵循您的建议后,它现在工作得很好。我已经更改了其中一个包的名称,它工作得非常好。非常感谢
    猜你喜欢
    • 2016-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-06
    • 2014-10-02
    • 1970-01-01
    相关资源
    最近更新 更多