struts 2 应用程序可以使用java5注释作为替代xml和java属性配置。这里是清单的不同的类别有关的最重要的注解:
@ namespace注释允许在action类中,而不是基于零配置的约定动作的命名空间的定义。
@namespace("/content") public class employee extends actionsupport{ ... }
@ result注解允许在action类中,而不是一个xml文件中定义的动作结果。
@result(name="success", value="/success.jsp") public class employee extends actionsupport{ ... }
@ results注解定义了一套动作的结果。
@results({ @result(name="success", value="/success.jsp"), @result(name="error", value="/error.jsp") }) public class employee extends actionsupport{ ... }
@after注解标志着一个需要调用后的主要操作方法和执行结果的操作方法。返回值将被忽略。
public class employee extends actionsupport{ @after public void isvalid() throws validationexception { // validate model object, throw exception if failed } public string execute() { // perform secure action return success; } }
@ before注释标记需要一个操作方法的主要操作方法之前被调用执行结果。返回值将被忽略。
public class employee extends actionsupport{ @before public void isauthorized() throws authenticationexception { // authorize request, throw exception if failed } public string execute() { // perform secure action return success; } }
@ beforeresult注解标志着一个结果之前需要执行的操作方法。返回值将被忽略。
public class employee extends actionsupport{ @beforeresult public void isvalid() throws validationexception { // validate model object, throw exception if failed } public string execute() { // perform action return success; } }
此验证注解如果有任何转换错误进行了实地检查,并适用于他们,如果他们存在。
public class employee extends actionsupport{ @conversionerrorfieldvalidator(message = "default message", key = "i18n.key", shortcircuit = true) public string getname() { return name; } }
这验证注解检查日期字段的值在指定范围内。
public class employee extends actionsupport{ @daterangefieldvalidator(message = "default message", key = "i18n.key", shortcircuit = true, min = "2005/01/01", max = "2005/12/31") public string getdob() { return dob; } }
此验证注解检查双字段有一个值,该值在指定范围内。如果既不最小或最大,什么都不会做的。
public class employee extends actionsupport{ @doublerangefieldvalidator(message = "default message", key = "i18n.key", shortcircuit = true, mininclusive = "0.123", maxinclusive = "99.987") public string getincome() { return income; } }
这验证注解检查一个字段是一个有效的e-mail地址,如果它包含一个非空的字符串。
public class employee extends actionsupport{ @emailvalidator(message = "default message", key = "i18n.key", shortcircuit = true) public string getemail() { return email; } }
这种非字段级验证验证所提供的正则表达式。
@expressionvalidator(message = "default message", key = "i18n.key", shortcircuit = true, expression = "an ognl expression" )
这验证注解检查一个数字字段的值在指定的范围内。如果既不最小或最大,什么都不会做的。
public class employee extends actionsupport{ @intrangefieldvalidator(message = "default message", key = "i18n.key", shortcircuit = true, min = "0", max = "42") public string getage() { return age; } }
这个注解验证一个字符串字段,使用正则表达式。
@regexfieldvalidator( key = "regex.field", expression = "yourregexp")
这验证注解检查一个字段不为空。标注必须被应用在方法层面。
public class employee extends actionsupport{ @requiredfieldvalidator(message = "default message", key = "i18n.key", shortcircuit = true) public string getage() { return age; } }
这验证注解检查一个字符串字段不为空(即非空,长度> 0)。
public class employee extends actionsupport{ @requiredstringvalidator(message = "default message", key = "i18n.key", shortcircuit = true, trim = true) public string getname() { return name; } }
这个验证检查字符串字段是合适的长度。假定该字段是一个字符串。如果设置既不是minlength 也不是最大长度,什么都不会做。
public class employee extends actionsupport{ @stringlengthfieldvalidator(message = "default message", key = "i18n.key", shortcircuit = true, trim = true, minlength = "5", maxlength = "12") public string getname() { return name; } }
这个验证检查一个字段是一个有效的url。
public class employee extends actionsupport{ @urlvalidator(message = "default message", key = "i18n.key", shortcircuit = true) public string geturl() { return url; } }
如果想使用多个相同类型的注释,这些注释必须嵌套在@validations() 注释。
public class employee extends actionsupport{ @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; } }
这个注解可以用于自定义验证。使用validationparameter的注释,以提供额外的 params.
@customvalidator(type ="customvalidatorname", fieldname = "myfield")
这是一个标记注释类型转换类型级别。转换注释必须应用在类型级别。
@conversion() public class conversionaction implements action { }
这个注解设置类型转换createifnull。必须应用在域或方法级createifnull注解。
@createifnull( value = true ) private list<user> users;
这个注解设置元素进行类型转换。必须应用在字段域或方法级元素的注解。
@element( value = com.acme.user ) private list<user> userlist;
这个注解设置进行类型转换的关键。必须应用在域或方法级的关键注解。
@key( value = java.lang.long.class ) private map<long, user> usermap;
这个注解设置类型转换keyproperty。必须应用在域或方法级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; }