更改多模块Maven Web项目的struts.xml文件名
我有一个包含多个模块的Maven项目。 在四个模块中,其中两个是Web模块。
这是结构。
MyProject | |__ api | |__ commons | |__ web_child | |__ web_main
web_main
模块是主要模块,它也可以包含web_child
模块。
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
两个模块都是war
。
web-main
依赖于所有模块,而web-child
依赖于前两个(API和commons)模块。
在web-main
的pom.xml
,我正在为web-child
添加依赖web-child
,它会自动添加其他两个jar。
主模块web-main
在服务器上运行完美。
但是当我试图单独运行web-child
模块时,它显示的错误就像
There is no Action mapped for namespace [/] and action name [childMenu] associated with context path ...
因为它没有采用struts-config.xml
当我将文件重命名为struts.xml
, web-child
工作正常。 但那个时候主模块没有运行。
所以我想将子模块中的struts.xml
重命名为struts-config.xml
,我需要明确指定它。
我正在使用Struts2。 但我在web.xml
尝试了以下内容,显然它没有用
action org.apache.struts.action.ActionServlet config ../resources/struts-config.xml
如何解决这个问题呢?
更新1
嗨,我在我的web-child web.xml中添加了以下内容
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter config struts-config.xml
而我正在追踪exception。 我需要添加任何依赖吗?
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.(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
在strutsfilter初始化参数中明确指定配置文件。
struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter config struts.xml,struts-config.xml,struts-default.xml,struts-plugin.xml