Struts2入门(7): 注解
2017-08-12 15:33
330 查看
Struts2 注解
Struts 2 提供类类似 Servlet3 的注解,用于简化 struts.xml 的Actio配置,在使用注解的情况下,甚至可以完全不使用 struts.xml 文件来进行相关的配置;以下是一个使用注解代替 struts.xml 进行 Action 映射配置的示例:demo.CheckAction该Action是一个简单的表单提供验证处理逻辑;
import com.opensymphony.xwork2.ActionSupport; import org.apache.struts2.convention.annotation.Action; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.validator.annotations.*; //配置结果视图 @Results({ @Result(name="success",location="/success.jsp"), @Result(name="input",location="/login.jsp") }) public class CheckAction { private String name; private String age; //配置Action映射 @Action(value="/check") public String execute() throws Exception{ return "success"; } //配置数据验证 @RequiredFieldValidator(message="The name is required") public String getName(){ return name; } public void setName(String name){ this.name = name; } //配置数据验证 @IntRangeFieldValidator(message="Age must be in between 18 and 70",min="18",max="65") public String getAge(){ return age; } public void setPassword(String age){ this.age = age; } }web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <!--配置struts启动参数--> <init-param> <param-name>struts.devMode</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
以下是一些常用的注释类型:
动作相关注释
@Namespace 命名空间注释
@ Namespace注释允许在Action类中,而不是基于零配置的约定动作的命名空间的定义;@Namespace("/content") public class TestAction{ ... }
@Result @Results 结果注释
@ Result注解允许在Action类中,而不是一个XML文件中定义的动作结果;@ Results注解定义了一套动作的结果;
@Result(name="success", value="/success.jsp") public class TestAction{ ... }
@Results({ @Result(name="success", value="/success.jsp"), @Result(name="error", value="/error.jsp") }) public class TestAction{ ... }
拦截相关注释
@After
@After注解标志着一个需要调用后的主要操作方法和执行结果的操作方法;public class TestAction{ @After public void isValid() throws ValidationException { // validate model object, throw exception if failed } public String execute() { // perform secure action return SUCCESS; } }
@Before
@ Before注释标记需要一个操作方法的主要操作方法之前被调用执行结果;public class TestAction{ @Before public void isAuthorized() throws AuthenticationException { // authorize request, throw exception if failed } public String execute() { // perform secure action return SUCCESS; } }
@BeforeResult
@ BeforeResult注解标志着一个结果之前需要执行的操作方法;public class TestAction{ @BeforeResult public void isValid() throws ValidationException { // validate model object, throw exception if failed } public String execute() { // perform action return SUCCESS; } }
验证相关注释
@RequiredFieldValidator 字段非空验证
这验证注解检查一个字段不为空;public class TestAction{ private String id; @RequiredFieldValidator(message = "Default message", key = "i18n.key", shortCircuit = true,trim = true) public String getId() { return id; } }@StringLengthFieldValidator 字段长度验证
改验证检查字符串字段是否为合适的长度;
public class TestAction{ private String name; @StringLengthFieldValidator(message = "Default message", key = "i18n.key", shortCircuit = true, trim = true, minLength = "1", maxLength = "12") public String getName() { return name; } }
@RegexFieldValidator 字段正则表达式验证
该注解使用正则表达式验证一个字符串字段;public class TestAction{ private String id; @RegexFieldValidator( key = "regex.field", expression = "^\\d{4}-\\d{8}$") public String getId() { return id; } }@DoubleRangeFieldValidator 浮点数检查验证
该验证注解验证double字段的范围;
public class TestAction{ private String income; @DoubleRangeFieldValidator(message = "Default message", key = "i18n.key", shortCircuit = true, minInclusive = "0.314", maxInclusive = "99.987") public String getIncome() { return income; } }
@IntRangeFieldValidator 整型数检查验证
该验证注解验证int字段的范围;public class TestAction{ private String age; @IntRangeFieldValidator(message = "Default message",key = "i18n.key", shortCircuit = true, min = "0", max = "42") public String getAge() { return age; } }
@DateRangeFieldValidator 日期检查验证
该验证注解检查日期字段的值在指定范围内;public class TestAction{ private String date; @DateRangeFieldValidator(message = "Default message", key = "i18n.key", shortCircuit = true, min = "2010/01/01", max = "2020/12/31") public String getDate() { return date; } }
@EmailValidator 邮件字段格式检查验证
该验证注解检查一个字段是一个有效的E-mail地址;public class TestAction{ private String email; @EmailValidator(message = "Default message", key = "i18n.key", shortCircuit = true) public String getEmail() { return email; } }
@UrlValidator URL格式验证
public class TestAction{ private String uri; @UrlValidator(message = "Default message", key = "i18n.key", shortCircuit = true) public String getUri() { return uri; } }
@Conversion 类型转换验证
该注解验证类型装换是否合法;@Conversion() public class TestAction { }@CreateIfNull
该注解设置类型转换CreateIfNull是否合法;
public class TestAction{ @CreateIfNull( value = true ) private List<User> users; }
@Element
该注解设置元素进行类型转换 ;public class TestAction{ @Element( value = demo.User ) private List<User> users; }
@Key 指定类型转换验证
该注解设置进行类型转换的关键类型;public class TestAction{ @Key( value = java.lang.Long.class ) private Map<Long, User> userMap; }
@KeyProperty 关键域类型转换验证
该注解设置类型转换关键域;@KeyProperty( value = "userName" ) protected List<User> users = null;
@TypeConversion 类级别类型装换验证
这个注解的注解是用于类和应用程序的转换规则;@TypeConversion(rule = ConversionRule.COLLECTION, converter = "java.util.String") public void setUsers( List users ) { this.users = users; }
@Validations
如果想使用多个相同类型的注释,这些注释必须嵌套在@Validations() 注释;public class TestAction{ private String name; @Validations( requiredFields ={@RequiredFieldValidator(type = ValidatorType.SIMPLE,fieldName = "customfield", message = "You must enter a value for field.")}, requiredStrings ={@RequiredStringValidator(type = ValidatorType.SIMPLE, fieldName = "stringisrequired", message = "You must enter a value for string.")} ) public String getName() { return name; } }
相关文章推荐
- Spring3,struts2入门,注解方法
- struts2简单入门及注解的使用
- Struts2 使用注解入门
- Struts2入门了解1
- Struts2基于注解的Action配置
- (23) 深入理解Java:注解(Annotation)基本概念||自定义注解入门||及注解处理器
- Spring注解入门
- struts2学习笔记 -- day01struts开发包详解、入门案例环境搭建
- struts2 注解 demo2
- Struts2 注解下的Action访问规则
- struts2 注解 同时 使用 *_*_*_*等
- Struts2入门
- Struts2 第一个入门案例
- struts2 url 重写 经典入门
- struts2 注解零配置视频――私塾在线提供
- Struts2入门案例,自动装配
- SSH框架入门(一)——Struts2基础及查错步骤
- struts2注解
- 问题点_注解(Annotation)入门理解
- shiro-入门,快速与springmvc整合,全注解,最简单让项目运行起来