我正在使用约定插件通过注释配置所有内容的Struts 2 Web应用程序。我遇到了一些动作类问题,我想在其中使用多个父包。我确实找到了在Apache's site上执行此操作的方法-但这似乎已被弃用。它不起作用,抛出类型不匹配:无法从String[]
转换为String
错误。
@ParentPackage({"my-parent-package1, my-parent-package2"})
package com.mycompany.myapp.actions
import org.apache.struts2.config.ParentPackage;
我正在使用Struts 2.2.1。是否可以通过注解授予动作多个父包?似乎奇怪的是,他们将其删除为功能。
最佳答案
您不能使用注释来完成此操作,但是仍然可以通过XML配置来完成。 Javadoc说
该批注允许操作修改其父包
正在使用。由于XWork包是由Convention插件创建的
通过动作所在的Java包,有些棘手
XWork父程序包和XWork程序包的名称空间的处理
用于发现的动作,以便同一包中的两个动作可以
指定不同的父项和名称空间而不会发生冲突。
为了正确处理此问题,请使用XWork包的名称
使用以下格式构建放置操作的对象:
##
这意味着在java包中可以有多个父包。但是您不能在同一个类或包上放置两个或多个@ParentPackage
批注。如您所见,不能为父包提供数组。但是您至少可以有两个父包,一个在包定义中,另一个在操作类中。不幸的是,配置生成器为此注释构建了两个配置,但仅为具有注释的配置创建了操作配置。