对于与上下文路径[/ SampleTC_test]关联的名称空间[/]和动作名称[viewBooks],没有映射的Action。 - [未知位置]

时间:2015-11-13 13:21:53

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

我知道还有其他几个线程有同样的错误,但请相信我,不是他们帮我解决了我的问题。

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

我的问题是,在我的应用程序中我有struts.xml,因为它的大小我把它分成三个xml文件。一个是主struts.xml,它包含两个include标记,它指向同一个应用程序的两个不同的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>

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

支柱-是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中的操作根本不起作用并且给我错误

  

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

1 个答案:

答案 0 :(得分:1)

您不能拥有两个名称相同的包。使用像

这样的东西
<package name="default1" namespace="/" extends="struts-default">
   <!-- ... -->
</package>

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

BTW避免使用大量struts.xml文件的最佳方法是使用Convention plugin
考虑将至少用于下一个项目。