没有为命名空间 [/] 映射的操作和与上下文路径 [/SampleTC_test] 关联的操作名称 [viewBooks]。 - [未知位置]
There is no Action mapped for namespace [/] and action name [viewBooks] associated with context path [/SampleTC_test]. - [unknown location]
我知道还有其他几个线程有同样的错误,但相信我,没有一个帮助我解决了我的问题。
我有一个基于 Java 构建的 Web 应用程序,使用 Struts2 版本 struts-2.3.16 和 Hibernate。
我的问题是,在我的应用程序中我有 struts.xml,因为它很大,我将它分成三个 xml 文件。一个是 main struts.xml,它包含两个 include 标记,指出同一应用程序的两个不同的 strtus-XXX.xml 文件。我的问题是只有一个 struts-XXX.xml 在工作,而我在第二个 xml 文件中写的任何操作都不起作用。如果我的应用程序试图指出第二个 xml 文件中提到的任何 "action",它就不会被识别。
这是我的
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 中的操作根本不起作用并且给我错误
There is no Action mapped for namespace [/
] and action name [viewBooks
] associated with context path [/SampleTC_test
]. - [unknown location]
不能有两个同名的包。使用像
这样的东西
<package name="default1" namespace="/" extends="struts-default">
<!-- ... -->
</package>
<package name="default2" namespace="/" extends="struts-default">
<!-- ... -->
</package>
顺便说一句,避免巨大 struts.xml 文件的最佳方法是使用 Convention plugin。
考虑在下一个项目中至少使用它。
我知道还有其他几个线程有同样的错误,但相信我,没有一个帮助我解决了我的问题。
我有一个基于 Java 构建的 Web 应用程序,使用 Struts2 版本 struts-2.3.16 和 Hibernate。
我的问题是,在我的应用程序中我有 struts.xml,因为它很大,我将它分成三个 xml 文件。一个是 main struts.xml,它包含两个 include 标记,指出同一应用程序的两个不同的 strtus-XXX.xml 文件。我的问题是只有一个 struts-XXX.xml 在工作,而我在第二个 xml 文件中写的任何操作都不起作用。如果我的应用程序试图指出第二个 xml 文件中提到的任何 "action",它就不会被识别。
这是我的
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 中的操作根本不起作用并且给我错误
There is no Action mapped for namespace [
/
] and action name [viewBooks
] associated with context path [/SampleTC_test
]. - [unknown location]
不能有两个同名的包。使用像
这样的东西<package name="default1" namespace="/" extends="struts-default">
<!-- ... -->
</package>
<package name="default2" namespace="/" extends="struts-default">
<!-- ... -->
</package>
顺便说一句,避免巨大 struts.xml 文件的最佳方法是使用 Convention plugin。
考虑在下一个项目中至少使用它。