Struts 2 - Tipi di annotazioni

Le applicazioni Struts 2 possono utilizzare le annotazioni Java 5 come alternativa alla configurazione delle proprietà XML e Java. Ecco l'elenco delle annotazioni più importanti relative a diverse categorie:

Annotazione spazio dei nomi (annotazione azione)

L'annotazione @Namespace consente la definizione dello spazio dei nomi di un'azione nel file Action class piuttosto che basato sulle convenzioni di Zero Configuration.

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

Annotazione risultato - (Annotazione azione)

L'annotazione @Result consente la definizione dei risultati dell'azione nella classe Azione piuttosto che in un file XML.

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

Annotazione risultati - (Annotazione azione)

L'annotazione @Results definisce un insieme di risultati per un'azione.

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

Dopo l'annotazione - (Annotazione dell'intercettore)

L'annotazione @After contrassegna un metodo di azione che deve essere chiamato dopo che il metodo di azione principale e il risultato è stato eseguito. Il valore restituito viene ignorato.

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

Prima dell'annotazione - (Annotazione dell'intercettore)

L'annotazione @Before contrassegna un metodo di azione che deve essere chiamato prima che il metodo di azione principale e il risultato siano stati eseguiti. Il valore restituito viene ignorato.

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

Annotazione BeforeResult - (Annotazione Interceptor)

L'annotazione @BeforeResult contrassegna un metodo di azione che deve essere eseguito prima del risultato. Il valore restituito viene ignorato.

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 - (Annotazione di convalida)

Questa annotazione di convalida controlla se ci sono errori di conversione per un campo e li applica se esistono.

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

DateRangeFieldValidator Annotation - (Annotazione di convalida)

Questa annotazione di convalida controlla che un campo data abbia un valore all'interno di un intervallo specificato.

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

Annotazione DoubleRangeFieldValidator - (Annotazione di convalida)

Questa annotazione di convalida controlla che un doppio campo abbia un valore all'interno di un intervallo specificato. Se non è impostato né min né max, non verrà eseguito nulla.

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

Annotazione EmailValidator - (Annotazione di convalida)

Questa annotazione di convalida controlla che un campo sia un indirizzo e-mail valido se contiene una stringa non vuota.

public class Employee extends ActionSupport{

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

ExpressionValidator Annotation - (Annotazione di convalida)

Questo validatore di livello non di campo convalida un'espressione regolare fornita.

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

Annotazione IntRangeFieldValidator - (Annotazione di convalida)

Questa annotazione di convalida controlla che un campo numerico abbia un valore all'interno di un intervallo specificato. Se non è impostato né min né max, non verrà eseguito nulla.

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 - (Annotazione di convalida)

Questa annotazione convalida un campo stringa utilizzando un'espressione regolare.

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

RequiredFieldValidator Annotation - (Annotazione di convalida)

Questa annotazione di convalida controlla che un campo non sia nullo. L'annotazione deve essere applicata a livello di metodo.

public class Employee extends ActionSupport{

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

RequiredStringValidator Annotation - (Annotazione di convalida)

Questa annotazione di convalida controlla che un campo String non sia vuoto (cioè non nullo con una lunghezza> 0).

public class Employee extends ActionSupport{

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

StringLengthFieldValidator Annotation - (Annotazione di convalida)

Questo validatore controlla che un campo String sia della lunghezza giusta. Si presuppone che il campo sia una stringa. Se non è impostato né minLength né maxLength, non verrà eseguito nulla.

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 - (Annotazione di convalida)

Questo validatore controlla che un campo sia un URL valido.

public class Employee extends ActionSupport{

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

Annotazione di convalida - (Annotazione di convalida)

Se desideri utilizzare più annotazioni dello stesso tipo, queste annotazioni devono essere nidificate all'interno dell'annotazione @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;
   }
}

Annotazione CustomValidator - (Annotazione di convalida)

Questa annotazione può essere utilizzata per i validatori personalizzati. Utilizza l'annotazione ValidationParameter per fornire parametri aggiuntivi.

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

Annotazione conversione - (Annotazione conversione tipo)

Questa è un'annotazione indicatore per le conversioni di tipo a livello di tipo. L'annotazione di conversione deve essere applicata a livello di tipo.

@Conversion()
   public class ConversionAction implements Action {
}

Annotazione CreateIfNull - (Annotazione conversione tipo)

Questa annotazione imposta CreateIfNull per la conversione del tipo. L'annotazione CreateIfNull deve essere applicata a livello di campo o di metodo.

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

Annotazione elemento - (Annotazione conversione tipo)

Questa annotazione imposta l'elemento per la conversione del tipo. L'annotazione dell'elemento deve essere applicata a livello di campo o di metodo.

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

Annotazione chiave - (Annotazione conversione tipo)

Questa annotazione imposta la chiave per la conversione del tipo. L'annotazione chiave deve essere applicata a livello di campo o di metodo.

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

Annotazione proprietà chiave - (Annotazione conversione tipo)

Questa annotazione imposta KeyProperty per la conversione del tipo. L'annotazione KeyProperty deve essere applicata a livello di campo o metodo.

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

TypeConversion Annotation - (Type Conversion Annotation)

Questa annotazione di annotazione viene utilizzata per le regole di conversione a livello di applicazione e di classe. L'annotazione TypeConversion può essere applicata a livello di proprietà e metodo.

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