Struts 2 - Tipos de anotações

Os aplicativos Struts 2 podem usar anotações Java 5 como alternativa à configuração de propriedades XML e Java. Aqui está a lista das anotações mais importantes relacionadas a diferentes categorias -

Anotação de namespace (anotação de ação)

A anotação @Namespace permite a definição do namespace de uma ação no Action classe em vez de com base nas convenções de Zero Configuration.

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

Anotação de resultado - (anotação de ação)

A anotação @Result permite a definição de resultados de ação na classe Action em vez de um arquivo XML.

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

Anotação de resultados - (anotação de ação)

A anotação @Results define um conjunto de resultados para uma ação.

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

Após a anotação - (anotação do interceptor)

A anotação @After marca um método de ação que precisa ser chamado após o método de ação principal e o resultado ser executado. O valor de retorno é ignorado.

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 da anotação - (anotação do interceptor)

A anotação @Before marca um método de ação que precisa ser chamado antes que o método de ação principal e o resultado sejam executados. O valor de retorno é ignorado.

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 - (Interceptor Annotation)

A anotação @BeforeResult marca um método de ação que precisa ser executado antes do resultado. O valor de retorno é ignorado.

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

ConversionErrorFieldValidator Annotation - (Validation Annotation)

Esta anotação de validação verifica se há erros de conversão para um campo e os aplica, se houver.

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

DateRangeFieldValidator Annotation - (Validation Annotation)

Esta anotação de validação verifica se um campo de data tem um valor dentro de um intervalo 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;
   }
}

DoubleRangeFieldValidator Annotation - (Validation Annotation)

Esta anotação de validação verifica se um campo duplo possui um valor dentro de um intervalo especificado. Se nem min nem max forem definidos, nada será feito.

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 - (Validation Annotation)

Esta anotação de validação verifica se um campo é um endereço de e-mail válido se contiver uma String não vazia.

public class Employee extends ActionSupport{

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

ExpressionValidator Annotation - (Validation Annotation)

Este validador de nível não campo valida uma expressão regular fornecida.

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

IntRangeFieldValidator Annotation - (Validation Annotation)

Esta anotação de validação verifica se um campo numérico possui um valor dentro de um intervalo especificado. Se nem min nem max forem definidos, nada será feito.

public class Employee extends ActionSupport{

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

RegexFieldValidator Annotation - (Validation Annotation)

Esta anotação valida um campo de string usando uma expressão regular.

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

RequiredFieldValidator Annotation - (Validation Annotation)

Esta anotação de validação verifica se um campo não é nulo. A anotação deve ser aplicada no nível do método.

public class Employee extends ActionSupport{

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

RequiredStringValidator Annotation - (Validation Annotation)

Esta anotação de validação verifica se um campo String não está vazio (ou seja, não nulo com um comprimento> 0).

public class Employee extends ActionSupport{

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

StringLengthFieldValidator Annotation - (Validation Annotation)

Este validador verifica se um campo String tem o comprimento correto. Ele assume que o campo é uma String. Se nem minLength nem maxLength forem definidos, nada será feito.

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

UrlValidator Annotation - (Validation Annotation)

Este validador verifica se um campo é um URL válido.

public class Employee extends ActionSupport{

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

Anotação de validação - (anotação de validação)

Se você quiser usar várias anotações do mesmo tipo, essas anotações devem ser aninhadas na anotação @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;
   }
}

CustomValidator Annotation - (Validation Annotation)

Esta anotação pode ser usada para validadores personalizados. Use a anotação ValidationParameter para fornecer parâmetros adicionais.

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

Conversion Annotation - (Type Conversion Annotation)

Esta é uma anotação de marcador para conversões de tipo no nível de tipo. A anotação de conversão deve ser aplicada no nível de tipo.

@Conversion()
   public class ConversionAction implements Action {
}

CreateIfNull Annotation - (Type Conversion Annotation)

Esta anotação define CreateIfNull para conversão de tipo. A anotação CreateIfNull deve ser aplicada no nível do campo ou método.

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

Elemento de anotação - (anotação de conversão de tipo)

Esta anotação define o Elemento para conversão de tipo. A anotação de elemento deve ser aplicada em nível de campo ou método.

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

Key Annotation - (Type Conversion Annotation)

Esta anotação define a chave para conversão de tipo. A anotação chave deve ser aplicada no nível do campo ou método.

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

KeyProperty Annotation - (Type Conversion Annotation)

Esta anotação define a KeyProperty para conversão de tipo. A anotação KeyProperty deve ser aplicada no nível do campo ou método.

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

TypeConversion Annotation - (Type Conversion Annotation)

Esta anotação é usada para regras de conversão de classes e aplicativos. A anotação TypeConversion pode ser aplicada em nível de propriedade e método.

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