Convention插件与"约定"支持

使用Convention,必须将Struts2下的struts2-convention-plugin-*.*.*.jar复制到WEB-INF/lib路径下

Action的搜索和映射约定:(它会自动搜索位于action、actions、struts、struts2包下的所有java类)

          会把如下java类当做Action:

                       >所有实现了com.opensymphony.xwork2.Action的java类
                      >所有以Action结尾的java类
                           :wang.app.actions.LoginAction
                            wang.app.actions.books.getBooks    (该类实现了com.opensymphony.xwork2.Action接口)
                            wang.app.action.LoginAction
                            wang.app.struts.auction.bid.BidAction
                            wang.app.struts2.wage.hr.AddEmployeeAction

允许设置如下三个常量:

>struts.convention.exclude.packages:指定不扫描哪些包下的java类,位于这些包下的java类不会自动映射成Action

>struts.convention.package.Locators:指定某包作为根包(对于actions.wang.LoginAction类,按约定映射为/wang/login,如果该常量设为wang,则该Action将会映射为/login)

>struts.convention.action.packages:Convention除了扫描action.actions.struts.struts2包,还扫描该常量指定的一个或多个包

将扫描包映射为命名空间:    (会将action、actions、struts、struts2映射为根命名空间)
                :wang.app.actions.LoginAction 映射到/
                 wang.app.actions.books.GetBooks 映射到/books
                 wang.app.struts2.wage.hr.AddEmployeeAction 映射到/wage/hr

Action类名映射为Action的name属性:
                1.如果Action类型包含Action后缀,将Action后缀去掉,否则不做任何处理
                2.得到第1步的结果,将驼峰写法转换为中划线写法
                    :wang.app.actions.LoginAction 映射到/login.action
                     wang.app.actions.books.GetBooks 映射到/books/get-books.action
                      wang.app.struts2.wage.hr.AddEmployeeAction 映射到/wage/hr/add-employee.action

按约定映射Result:
            (Convention总会到Web应用的WEB-INF/content路径下定位物理资源,约定是:
             actionName+result+suffix,当逻辑视图找不到对应视图资源时,Convention会自动使用actionName+suffix作为视图资源,suffix指的是视图技术)
           

Action的URL 返回逻辑视图名 结果类型 对应物理视图
/login success Dispatcher \WEB-INF\content\login-success.jsp
/wang/get-book success Dispatcher \WEB-INF\content\wang\get-book-success.jsp


content
               |——login.jsp
               |——wang
                    |——get-book-success.jsp

 使用Config Browser:(可以看到每个Action详细映射信息)

安装该插件:    将Struts2项目的lib目录下的struts-config-browser-plugin-*.*.*.jar文件复制到WEB-INF/lib路径下
首页地址:    http://localhost:8080/应用名/config-borwser/actionNames.action

 

Action链约定:

Action处理后不进入试图页面,进入另一个Action,须遵守如下约定:

>第一个Action返回的逻辑视图字符串没有对应逻辑视图
>第二个Action与第一个Action处于同一个包下
>第二个Action映射的URL为:firstactionName+resultCode

例:

package org.wang.action
...
public class FirstAction extends ActionSupport
{
		...
	public String execute()
	{
		...
		return "second";
	}
}

 (WEB-INF/content下不要提供first-second.jsp或first.jsp,第二个Action类名应为FirstSecondAction)

Convention插入的相关常量:(应看Struts2官方API更佳)

猜你喜欢

转载自betterthisworld.iteye.com/blog/2087806
今日推荐