更改多模块Maven Web项目的struts.xml文件名 [英] Changing struts.xml file name for a multi-module Maven web project
问题描述
我有一个包含多个模块的Maven项目。在四个模块中,其中两个是网络模块。
I have a Maven project with multiple modules. Out of four modules, two of them are web modules.
这是结构。
MyProject
|
|__ api
|
|__ commons
|
|__ web_child
|
|__ web_main
web_main
模块是主要模块,它也可以包含 web_child
模块。
web_main
module is the main one and it can include web_child
module also.
web_child
模块结构
web_child
|
|__ src/main/java //java action classes and all
|__ src/main/resources
| |__ struts-config.xml
|
|__ WEB-INF
|__ JSP Pages
web_main
模块结构
web_main
|
|__ src/main/java //java action classes and all
|__ src/main/resources
| |__ struts.xml
|
|__ WEB-INF
|__ JSP Pages
两个模块都是战
。
web-main
取决于所有模块, web-child
取决于前两个(API& commons)模块。
web-main
depends on all the modules, and web-child
depends on first two (API & commons) modules.
在 web-main
中 pom.xml
,我正在为 web-child
添加依赖项,它会自动添加其他两个jar。
in web-main
's pom.xml
, I'm adding the dependency for web-child
and it will automatically add other two jars.
主模块 web-main
在服务器上运行良好。
The main module web-main
is running perfectly on server.
但是当我尝试单独运行 web-child
模块时,它显示的错误如
But when I am trying to run the web-child
module alone, it is showing error like
There is no Action mapped for namespace [/] and action name [childMenu] associated with context path ...
因为它没有采用 struts-config.xml
当我将文件重命名为 struts.xml
时, web-child
工作正常。但那个时候主模块没有运行。
When I am renaming the file to struts.xml
, web-child
is working fine. But that time main module is not running.
所以我想把子模块中的 struts.xml
重命名为 struts-config.xml
我需要明确指定它。
So I want to rename the struts.xml
in child module to struts-config.xml
and I need to specify it explicitly.
我正在使用Struts2。但是我在 web.xml
中尝试了以下内容,显然它不起作用
I am using Struts2. But I have tried the following in web.xml
and obviously it didn't work
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>../resources/struts-config.xml</param-value>
</init-param>
</servlet>
如何解决这个问题?
更新1
您好,我在我的web-child web.xml中添加了以下内容
Hi, I added following in my web-child web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts-config.xml</param-value>
</init-param>
</filter>
我得到以下异常。我是否需要添加任何依赖项?
And I am getting following exception. Do I need to add any dependency?
SEVERE: Exception starting filter struts2
Unable to load configuration. - [unknown location]
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:483)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:51)
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:107)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4775)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5452)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: Unable to load configuration. - [unknown location]
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:71)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:429)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:471)
... 19 more
Caused by: Cannot locate the chosen ObjectFactory implementation: spring - [unknown location]
at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:391)
at org.apache.struts2.config.BeanSelectionProvider.alias(BeanSelectionProvider.java:362)
at org.apache.struts2.config.BeanSelectionProvider.register(BeanSelectionProvider.java:288)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:215)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:68)
... 21 more
推荐答案
在struts过滤器初始化参数中明确指定配置文件。
Specify explicitly config file in the struts filter initialization parameter.
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>config</param-name>
<param-value>struts.xml,struts-config.xml,struts-default.xml,struts-plugin.xml</param-value>
</init-param>
</filter>
这篇关于更改多模块Maven Web项目的struts.xml文件名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!