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.