我创建了一个名为新类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>
该包的名称是完全独立的代码文物。
该struts-default
包......在Struts 2默认的包 。 它定义了默认的结果类型,拦截器,拦截器堆栈,以及一些其他的缺省值。你不需要把它扩大,但如果你不这样做,你有相当数量的手工工作在自己的包来完成。
我相信你应该把你的Action类的封装,可以认为对这样做的最好的做法没有合理的说法。 同样,你的动作类包是完全独立的包名,或者什么(如果有的话)软件包扩大了。
在Struts2套餐稍有不同的是,在Java中的软件包,但使用是分开的代码与自己的命名空间中使用不同的模块是相同的,所以它不是用行动名称冲突。 为了更好地理解包和命名空间,你可以看一下概念Struts 2的命名空间配置示例和说明教程。
如果你保持班的源文件夹,它不属于包你迟早会结束与问题命名新类和重码管理。
Struts2框架具有命名包struts-default
包含所有必要的东西通过通过把这个名字扩展到您的包能够在您的应用程序配置为使用extends
您的属性<package
标签。 你也可以包括其他插件,即其他默认套餐json-default
等
只要命名空间与包的名称,你可以比较Struts2框架使用Java语言和包命名空间的包名,你会发现它类似,但它们是完全不同的。 例如,通过Struts2的使用默认的命名空间是""
当其他包/名称空间没有找到行动或结果的名字时使用。 如果使用这几乎是等效namespace="/"
,其是应用程序的包根。
不要紧,你如何命名你的根包default
的root
,但不能与已经使用的框架,即名称struts-default
,如果省略namespace
属性,那么默认的命名空间将被使用。 这是类似于Java,如果你省略了包声明,则使用默认的包。
这个概念可能默认通过其他方面传播,例如有一个默认动作,默认的结果,默认拦截器栈等框架也使用的名称默认已知接口的默认实现,等等。 有没有一个单一的意义Word默认。 一般来说,如果你忽略的东西的代码,然后框架将使用它的默认设置。
是U可以包括在struts.xml中 ..like这个位置
<package name="default" extends="json-default,hibernate-default" namespace= "/">