1

我创建了一个名为的新类,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>
4

3 回答 3

2

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

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

Struts2 框架有一个名为的包struts-default,它包含所有必要的东西,可以通过将这个名称放入标签extends的属性来扩展包来在应用程序配置中使用。<package>您还可以包含来自其他插件的其他默认包,json-default例如,等等。

只要命名空间与包名相关,您可以将Java语言使用的包名与Struts2框架中的包命名空间进行比较,您可能会发现它们相似,但它们绝对不同。例如,Struts2 使用的默认命名空间是""在其他包/命名空间中找不到操作或结果名称时使用的。namespace="/"如果您使用which 是应用程序的包根,这几乎是等效的。

不管你如何用 of 来命名你的根包defaultroot而不是用框架已经使用的名称,即struts-default,如果你省略了这个namespace属性,那么将使用默认的命名空间。这与 Java 类似,如果省略包声明,则使用默认包。

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

于 2013-05-18T13:15:08.950 回答
1

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

struts-default包是... Struts 2 默认包。它定义了默认结果类型、拦截器、拦截器堆栈和一些其他默认值。您不需要扩展它,但如果您不这样做,您需要在自己的包中进行大量手动工作。

我相信您应该将您的操作类放在一个包中,并且认为没有合理的理由反对这样做的最佳实践。同样,您的操作类包完全独立于包名称或包扩展的内容(如果有的话)。

于 2013-05-18T12:12:25.010 回答
0

是的,你可以在struts.xml中包含这两个..like this here

<package name="default" extends="json-default,hibernate-default" namespace= "/">
于 2016-06-20T04:45:45.063 回答