我正在使用约定插件通过注释配置所有内容的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批注。如您所见,不能为父包提供数组。但是您至少可以有两个父包,一个在包定义中,另一个在操作类中。不幸的是,配置生成器为此注释构建了两个配置,但仅为具有注释的配置创建了操作配置。

10-08 01:58