-->

Struts 2的公约插件定义多个父包(Struts 2 Convention Plugin Def

2019-08-06 00:05发布

我工作的Struts 2的Web应用程序,利用公约插件配置通过注释的一切。 我打我的一些动作类,在这里我想使用多个父包的一个障碍。 我发现这样做对的手段Apache的网站 -但似乎已过时。 实在不行,扔回来类型不匹配:不能从转换String[]String错误。

@ParentPackage({"my-parent-package1, my-parent-package2"})
package com.mycompany.myapp.actions

import org.apache.struts2.config.ParentPackage;

我使用Struts 2.2.1。 是否有可能通过注释授予的操作多个父包? 似乎很奇怪,他们将不得不删除这是一个特点。

Answer 1:

你不能用注解做到这一点,但它仍然可以通过XML配置。 Javadoc中说,

此注释允许的行动来修改他们使用的是父包。 由于XWork的包被通过Java公约插件创建的包中存在的行为,有XWork的父包和XWork的包命名空间为发现的动作一些棘手的处理,以便在同一个封装中的两个动作可以指定不同的家长和命名空间无碰撞。

为了正确地解决这个问题,XWork的包的名称就是行动置于采用这种格式建立:

<Java的软件包>#<父 - XWork的封装>#<命名空间>

这意味着,可以在java包多个父包。 但是你不能把两个或两个以上@ParentPackage注释在同一类或包。 正如你通知不能有双亲套餐阵列。 但你至少可以有两个父包在一个包定义和其他的动作类。 而不幸的配置生成器生成2个CONFIGS这个注解,但动作的配置只对有注释的一个创造。



Answer 2:

我检查org.apache.struts2.convention.annotation.ParentPackage你,这是不允许的定义多父包。 这里是片段:

@Target({ElementType.TYPE, ElementType.PACKAGE})
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ParentPackage {
    /**
     * @return  The parent package.
     */
    String value();
}


文章来源: Struts 2 Convention Plugin Define Multiple Parent Packages