struts.xml 中 Struts 2 的默认包名称是什么?

问题描述 投票:0回答:3

我创建了一个名为

RegesterAction
的新类,但我没有将这个类保留在任何包中。我如何在
struts.xml
中配置此类?

下面是

struts.xml
文件,但我无法理解属性值
"default"
struts-default

<struts>
    <package name="default" extends="struts-default">
        <action name="*Register" method="{1}" class="RegisterAction">
            <result name="populate">/register.jsp</result>
</package>
</struts>
java package struts2 default xml-configuration
3个回答
2
投票

Struts2 中的包与 Java 中的包略有不同,但用法相同,将代码分成不同的模块,并使用自己的命名空间,因此不会与操作名称冲突。 为了更好地理解包和命名空间的概念,您可以查看Struts 2命名空间配置

如果您将类保留在源文件夹中并且它不属于该包,迟早您将遇到命名新类和繁重的代码管理的问题。

Struts2 框架有一个名为

struts-default
的包,其中包含能够在应用程序配置中使用的所有必要内容,通过将此名称放入
extends
标签的
<package>
属性来扩展包。您还可以包含其他插件中的其他 default 包,即
json-default
等。

只要namespace和包名相关,你对比一下Java语言使用的包名和Struts2框架中的包namespace,你可能会发现很相似,但它们是完全不同的。例如,Struts2 使用的默认命名空间是

""
,当在其他包/命名空间中找不到操作或结果名称时使用。如果您使用应用程序的包根目录
namespace="/"
,这几乎是等效的。

如何使用

default
root
命名根包并不重要,但不能使用框架已使用的名称,即
struts-default
,如果省略
namespace
属性,则默认命名空间将为用过的。这与Java类似,如果省略包声明,则使用默认包。

默认的概念可能会通过其他术语传播,例如默认操作、默认结果、默认拦截器堆栈等。该框架还使用名称默认来表示已知接口的默认实现,等等。 default 这个词没有单数含义。一般来说,如果您在代码中省略某些内容,那么框架将使用它的默认设置。


1
投票

包名称完全独立于您的代码工件。

struts-default

包是...Struts 2默认包
。它定义了默认结果类型、拦截器、拦截器堆栈和一些其他默认值。您不需要扩展它,但如果您不这样做,您就需要在自己的包中完成大量手动工作。 我相信你应该

将你的动作类放在一个包中,并且想不出任何合理的理由来反对这样做的最佳实践。同样,您的操作类包完全独立于包名称或包扩展的内容(如果有)。

是的,你可以将两者都包含在

0
投票
..像这里这样

<package name="default" extends="json-default,hibernate-default" namespace= "/">


© www.soinside.com 2019 - 2024. All rights reserved.