@Target(value={PACKAGE,TYPE}) @Retention(value=RUNTIME) public @interface Namespace
This annotation defines how actions can modify the namespace that they are added to. This overrides the behavior of the Convention plugin which by default uses the package names for namespaces. Since XWork packages are created by the Convention plugin via the Java packages that the actions exist in, there is some tricky handling of XWork parent packages and namespaces of the XWork packages for the Convention plugin discovered actions so that two actions in the same package can specify different parents and namespaces without collision.
In order to handle this correctly, the name of the XWork package that actions are placed into is built using this format:
<java-package>#<parent-xwork-package>#<namespace>
This mechanism will guarantee that two actions in the same
Java package can specify different parent packages (using the
ParentPackage
annotation)
and namespaces (using this annotation).
The value of a Namespace annotation should specify the portion of the action URL between the context path and the action name. For example:
@Namespace("/careers/job-postings-overview/job-postings")
This annotation can also be placed inside the special Java file named package-info.java, which allows package level annotations. If this is used in this manner it changes the default namespace for all actions within that Java package. The search order for the namespace of a particular class is therefore:
Action
annotation exists within the action and
specifies a full URI (i.e. it starts with a / character)public abstract String value
Copyright © 2000–2020 Apache Software Foundation. All rights reserved.