我正在开发 Struts 2 Web 应用程序,使用 Convention Plugin 通过注释配置所有内容。
我的一些操作类遇到了障碍,我想在其中使用多个父包。我在 Apache 的 Struts 站点 上没有找到这样做的示例,但这似乎已被弃用。
它不起作用,抛出错误:
类型不匹配:无法从
转换为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
注释。正如您所注意到的,父包不能有数组。但是您至少可以有两个父包,一个位于包定义,另一个位于操作类。不幸的是,配置构建器为此注释构建了两个配置,但仅为具有注释的配置创建了操作配置。
我帮你查了
org.apache.struts2.convention.annotation.ParentPackage
,不允许定义多父包。这是片段:
@Target({ElementType.TYPE, ElementType.PACKAGE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ParentPackage {
/**
* @return The parent package.
*/
String value();
}