2012-08-17 90 views
2

我有一个maven多模块项目。Struts 2验证失败时Action类坐落在一个单独的jar文件

project-services (service layer..above the dao layer) 
project-controller (My Action classes sits in this module) 
project-web (all jsps, view artificats) 

的问题是我在包DefaultProjectsAction.java有效DefaultProjectsAction-validation.xml中还有属性文件。

所有这些模块在部署war文件时都将位于/ WEB-INF/lib中。我在struts.xml中使用默认包。所有文件都正确设置。拼写错误的文件名正确检查。如果验证xml文件位于单独的jar中,我的struts验证是否可用?我在某处他们说它应该在WEB-INF/classes /中。这就是为什么我的struts表单无法验证的原因吗?

+0

验证的文件*应*搜索因为在课堂上,尽管我从来没有尝试过。如果你创建一个小的github项目,重新创建问题,我会看看。从Web模块中分离动作似乎有点奇怪,除非你真的在网络之外使用控制器。 – 2012-08-17 13:44:48

+0

感谢您的回复。动作类分开的原因是因为我正在使用现有的视图工件,并且控制器(在本例中是在Struts 2中)被告知将它们放入它们自己的模块中。现在已经有两天时间试图解决这个问题。文档不多说。但肯定在 -validation.xml与Action中的相同包中它们都在类路径中。我正在考虑使用全局验证,我将直接放在/ WEB-INF/classes / – 2012-08-17 17:53:45

回答

2

好吧,自从我开始研究这个问题以来已经有48个小时了,女士们,先生们已经找到了解决方案。

将struts 2动作类放在一个单独的模块上,验证设置必须如此。

project-controller (will have action classes for Struts 2 in this case) 
- com.pack.UserAction.java 

的解决方案是建立在项目的Web模块源文件夹的src /主/资源/ COM /包(Maven项目),并把UserAction-validation.xml中在那里。像这样

project-web (views, jsps, properties files and set-up files) 
- src/main/resources/com/pack/UserAction-validation.xml 

该文件将被复制到/ WEB-INF /班/ COM /包(动作类包应该形成路径)和建设项目