Struts 2 - Tipos de anotaciones

Las aplicaciones Struts 2 pueden usar anotaciones Java 5 como alternativa a la configuración de propiedades XML y Java. Aquí está la lista de las anotaciones más importantes relacionadas con diferentes categorías:

Anotación de espacio de nombres (anotación de acción)

La anotación @Namespace permite la definición del espacio de nombres de una acción en el Action class en lugar de basarse en las convenciones de Zero Configuration.

@Namespace("/content")
public class Employee extends ActionSupport{
  ...
}

Anotación de resultado - (Anotación de acción)

La anotación @Result permite la definición de resultados de Acción en la clase Acción en lugar de un archivo XML.

@Result(name = "success", value = "/success.jsp")
public class Employee extends ActionSupport{
 ...
}

Anotación de resultados - (Anotación de acción)

La anotación @Results define un conjunto de resultados para una acción.

@Results({
   @Result(name = "success", value = "/success.jsp"),
   @Result(name = "error", value = "/error.jsp")
})
public class Employee extends ActionSupport{
 ...
}

Después de la anotación - (Anotación del interceptor)

La anotación @After marca un método de acción que debe llamarse después de que se ejecutó el método de acción principal y el resultado. El valor de retorno se ignora.

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;
   }
}

Antes de la anotación - (Anotación del interceptor)

La anotación @Before marca un método de acción que debe llamarse antes de que se ejecute el método de acción principal y el resultado. El valor de retorno se ignora.

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 Annotation - (Anotación de interceptor)

La anotación @BeforeResult marca un método de acción que debe ejecutarse antes del resultado. El valor de retorno se ignora.

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;
   }
}

Anotación ConversionErrorFieldValidator - (Anotación de validación)

Esta anotación de validación verifica si hay errores de conversión para un campo y los aplica si existen.

public class Employee extends ActionSupport{
   @ConversionErrorFieldValidator(message = "Default message", 
      key = "i18n.key", shortCircuit = true)
   public String getName() {
      return name;
   }
}

Anotación DateRangeFieldValidator - (Anotación de validación)

Esta anotación de validación verifica que un campo de fecha tenga un valor dentro de un rango especificado.

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;
   }
}

Anotación DoubleRangeFieldValidator - (Anotación de validación)

Esta anotación de validación verifica que un campo doble tenga un valor dentro de un rango especificado. Si no se establece ni mínimo ni máximo, no se hará nada.

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;
   }
}

EmailValidator Annotation - (Anotación de validación)

Esta anotación de validación verifica que un campo sea una dirección de correo electrónico válida si contiene una Cadena no vacía.

public class Employee extends ActionSupport{

   @EmailValidator(message = "Default message", 
      key = "i18n.key", shortCircuit = true)
   public String getEmail() {
      return email;
   }
}

Anotación ExpressionValidator - (Anotación de validación)

Este validador de nivel que no es de campo valida una expresión regular proporcionada.

@ExpressionValidator(message = "Default message", key = "i18n.key", 
shortCircuit = true, expression = "an OGNL expression" )

Anotación IntRangeFieldValidator - (Anotación de validación)

Esta anotación de validación verifica que un campo numérico tenga un valor dentro de un rango especificado. Si no se establece ni mínimo ni máximo, no se hará nada.

public class Employee extends ActionSupport{

   @IntRangeFieldValidator(message = "Default message", 
      key = "i18n.key", shortCircuit = true, 
      min = "0", max = "42")
   public String getAge() {
      return age;
   }
}

Anotación RegexFieldValidator - (Anotación de validación)

Esta anotación valida un campo de cadena usando una expresión regular.

@RegexFieldValidator( key = "regex.field", expression = "yourregexp")

RequiredFieldValidator Annotation - (Anotación de validación)

Esta anotación de validación comprueba que un campo no sea nulo. La anotación debe aplicarse a nivel de método.

public class Employee extends ActionSupport{

   @RequiredFieldValidator(message = "Default message", 
      key = "i18n.key", shortCircuit = true)
   public String getAge() {
      return age;
   }
}

RequiredStringValidator Annotation - (Anotación de validación)

Esta anotación de validación comprueba que un campo de cadena no esté vacío (es decir, no nulo con una longitud> 0).

public class Employee extends ActionSupport{

   @RequiredStringValidator(message = "Default message", 
      key = "i18n.key", shortCircuit = true, trim = true)
   public String getName() {
      return name;
   }
}

Anotación StringLengthFieldValidator - (Anotación de validación)

Este validador verifica que un campo de cadena tenga la longitud correcta. Asume que el campo es una Cadena. Si no se establece ni minLength ni maxLength, no se hará nada.

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;
   }
}

Anotación UrlValidator - (Anotación de validación)

Este validador verifica que un campo sea una URL válida.

public class Employee extends ActionSupport{

   @UrlValidator(message = "Default message", 
      key = "i18n.key", shortCircuit = true)
   public String getURL() {
      return url;
   }
}

Anotación de validaciones - (Anotación de validación)

Si desea utilizar varias anotaciones del mismo tipo, estas anotaciones deben estar anidadas dentro de la anotación @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;
   }
}

Anotación CustomValidator - (Anotación de validación)

Esta anotación se puede utilizar para validadores personalizados. Utilice la anotación ValidationParameter para proporcionar parámetros adicionales.

@CustomValidator(type ="customValidatorName", fieldName = "myField")

Anotación de conversión: (Tipo de anotación de conversión)

Esta es una anotación de marcador para conversiones de tipo a nivel de tipo. La anotación de conversión debe aplicarse a nivel de tipo.

@Conversion()
   public class ConversionAction implements Action {
}

CreateIfNull Annotation - (Anotación de conversión de tipo)

Esta anotación establece CreateIfNull para la conversión de tipos. La anotación CreateIfNull debe aplicarse a nivel de campo o método.

@CreateIfNull( value = true )
private List<User> users;

Anotación de elemento - (Anotación de conversión de tipo)

Esta anotación establece el elemento para la conversión de tipos. La anotación de elemento debe aplicarse a nivel de campo o método.

@Element( value = com.acme.User )
private List<User> userList;

Anotación clave - (Anotación de conversión de tipo)

Esta anotación establece la clave para la conversión de tipos. La anotación clave debe aplicarse a nivel de campo o método.

@Key( value = java.lang.Long.class )
private Map<Long, User> userMap;

Anotación de propiedad clave - (Anotación de conversión de tipo)

Esta anotación establece KeyProperty para la conversión de tipos. La anotación KeyProperty debe aplicarse a nivel de campo o método.

@KeyProperty( value = "userName" )
protected List<User> users = null;

TypeConversion Annotation - (Anotación de conversión de tipo)

Esta anotación de anotación se utiliza para las reglas de conversión de toda la aplicación y la clase. La anotación TypeConversion se puede aplicar a nivel de propiedad y método.

@TypeConversion(rule = ConversionRule.COLLECTION, 
converter = "java.util.String")
public void setUsers( List users ) {
   this.users = users;
}