Aqui você aprende como usar o EnumConvertor do Vraptor para enumerações quando os parâmetros da requisição serão lidos.
Vamos passar pelos seguintes pontos:
A classe CategoryType é bem simples:
package org.vraptor.example.enumeration;
public enum CategoryType {
SIMPLE, COMPLEX, UNKNOWN;
public String getName() {
return name();
}
}Nos poderemos simplesmente usar parâmetro do método para ler os parâmetros da requisição e poderemos receber a enumeração pelo conversor padrão instalado:
package org.vraptor.example.enumeration;
@Component("categoryType")
public class CategoryTypeLogic {
private CategoryType type;
public void select(CategoryType type) {
// Gostaria de fazer alguma coisa com o parâmetro type?
System.out.println("Type: " + type.getName());
this.type = type;
}
public CategoryType getType() {
return this.type;
}
}Agora vamos criar um arquivo jsp para o resultado que mostra o nome da enumerção.
Como a variável type foi ejetada (outjected), nos podemos acessá-la pela expression language: a expressão $type.name vai chamar o método getName do tipo e imprime o resultado:
<html>
O tipo seleciondo foi ${type.name}.
</html>Vamos prosseguir com nosso formulário, onde o usuário seleciona o valor da enumeração. Nos iremos mostrar uma caixa para selecionar e chamar nossa lógica de negócios.
<html>
<!-- usando o método get, você pode acompanhar os valores do formulário no browser -->
<form action="categoryType.select.logic" method="get">
Tipo de categoria:
<select name="type">
<option value="SIMPLE">simple</option>
<option value="COMPLEX">complex</option>
<option value="UNKNOWN">unknown</option>
</select>
<input type="submit"/>
</form>
</html>Você também pode usar o numero ordinal da enumeração ... desse jeito você evita problemas, se alguém mudar a ordem dos seus elementos da enumeração:
<html>
<!-- usando o método get, você pode acompanhar os valores do formulário no browser -->
<form action="categoryType.select.logic" method="get">
Tipo de categoria:
<select name="type">
<option value="0">simple</option>
<option value="1">complex</option>
<option value="2">unknown</option>
</select>
<input type="submit"/>
</form>
</html>Agora é a hora de testar o arquivo /categoryType/index.jsp ...
Quando você mandar o formulário executar, o EnumConverter descobrirá o valor selecionado e preencherá a variável type na nossa lógica de negócios.
Depois o método select da lógica será executada e a variável type será ejetada.
O arquivo result.jsp mostra no final, qual o tipo foi selecionado.