9、Annotation
Action相关:
· 与Action相关的两个Annotation是@Action 和@Actions
· @Action中可指定一个value属性。类似于指定<action name=””/>属性值
· @Action中还可以指定一个params属性,该属性是一个字符串数组,用于该Acion指定的参数名和参数值。params属性应遵守如下格式:{“name1”,”value1”,”name2”,”value2”}
· @Actions 也用于修饰Action类里的方法,用于将该方法映射到多个URL.@Actions用于组织多个@Action.因此它可将一个方法映射成多个逻辑Action。
例如:
private String str;
@Actions({
@Action(login1,params={"str","这是已经注入的了!"}),// 键值对应注入属性值
@Action(login2)
})
public String login(){
return "str";
}
……
Result相关:
· @ResultPath @Result 和Results
· @Results用于组织多个@Result因此它只需指定一个value属性值,该value属性值为多个@Result
· @Result。使用@Result必须指定一个name属性,相当于<result name=””/>另外,它还有几个可选的属性。
· type 相当于<result type=””/>指定返回视图资源的类型
· location 相当于<result>…..</result>中间部分,用于指定实际视图位置
· params:该属性相当于<result/>元素里多个<param../>子元素的作用,用于为该Result指定参数值。该属性应满足{“name1”,”value1”,”name2”,”value2”}格式
· @Result有以下两种用法
· Action级的Result映射:以@Actions组合多个@Action后修饰的Action类。这种Result映射对该Action里的所有方法都有效。
· 方法级Result映射:将多个@Result组成数组后作为@Action的results属性值。这种Result映射仅对被修饰的方法有效。
· @ResultPath则用于修饰包和Action类,用于改变被修饰Action所对应的物理视图资源的根路径。
举例说:默认情况下,Convention都会到WEB-INF/content路径下找物理视图资源,一旦我们使用@ResultPath(“/abc”)修饰该Action,系统将回到abc目录下寻找物理视图资源。举例:在默认情况下,Convention都会到WEB-INF/content路径下需找物理视图资源,一旦我们使用@ResultPath(“/abc”)修饰该Action,系统会到abc目录下寻找物理视图资源。
例子:
// 指定该Action到/WEB-INF/abc目录下寻找物理视图资源
@ResultPath("/WEB-INF/abc")
// 为该Action指定2个Action级的Result映射
@Results({
@Result(name="input" , location="input.jsp"),
@Result(name="error" , location="error.jsp")
})
public class LoginAction
{
// 使用@Action将该方法映射到/crazyit
@Action(value="/crazyit",
// 使用results属性为该方法指定Result映射
results={@Result(name="success",
location="http://www.crazyit.org",
type="redirect")}
)
public String login() throws Exception
{
return "success";
}
}
与包和命名空间相关:
· @Namespace:修饰Action类或其所在的包。该Annotation中指定一个value属性值,用于指定被修饰的Action所在的命名空间
· @Namespaces:修饰Action类或其所在的包,用于组合多个@Namespace
· @ParentPackage: 用于指定被修饰的Action所在包的父包。
异常处理相关:
· @ExceptionMappings 用于组织多个@ExceptionMapping,因此它只需指定一个value属性值,该value属性值为多个@ExceptionMapping。
· @ExceptionMapping 用于定义异常类和物理视图之间的对应关系,也相当于struts.xml文件里<exception-mapping../>元素的作用
使用时,必须注意以下两个属性:
· exception: 用于指定异常类
· result :用于指定逻辑视图
· @ExceptionMpping有如下两种用法
· Action级的异常定义:以@ExceptionMappings组合多个@ExceptionMapping后修饰的Action类。这种异常定义对Action中的所有方法有效
· 方法级的异常定义: 将多个@ExceptionMapping组成数组后作为@Action的exceptionMappings属性值,这种异常定义仅对被修饰的方法有效。
拦截器配置相关:
· 与拦截器配置的Annotation有@InterceptorRef、@InterceptorRefs和@DefaultInterceptorRef
· @InterceptorRefs用于组织多个@InterceptorRef,因此它只需要指定一个value属性值,该value属性值为多个@InterceptorRef
· @InterceptorRef用于为指定Action引用拦截器或者是拦截器栈。也就相当于strut.xml中位于<action../>元素内部的<interceptor-ref../>子元素的作用。使用@InterceptorRefAnnotation时,必须制定一个value属性,用于指定所引用的拦截器或拦截器栈的名字。相当于<interceptor-ref../>子元素里name属性的作用。
· @DefaultInterceptorRef主要用于修饰包,用于指定该包的默认拦截器。这个Annotation只有一个value属性,用于指定默认拦截器的名字。