我知道还有其他几个线程有同样的错误,但请相信我,不是他们帮我解决了我的问题。
我有一个使用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
]关联的操作。 - [未知位置]
答案 0 :(得分:1)
您不能拥有两个名称相同的包。使用像
这样的东西<package name="default1" namespace="/" extends="struts-default">
<!-- ... -->
</package>
<package name="default2" namespace="/" extends="struts-default">
<!-- ... -->
</package>
BTW避免使用大量struts.xml文件的最佳方法是使用Convention plugin。
考虑将至少用于下一个项目。