Parâmetro
É muito comum em uma aplicação web haver a necessidade de passar parâmetros através da URL. A passagem de
parâmetros até que é algo fácil e tranquilo de fazer. O chato é a captura do parâmetro dentro do Page Bean,
pois toda vez que quisermos fazê-lo, temos que acessar o FacesContext, para a partir daí
pegar o HttpServletRequest e depois recuperar o valor passado.
Veja abaixo como ficaria o código.
Passagem do parâmetro:
Captura do parâmetro pelo Page Bean
Como passar parâmetro no Demoiselle 2.
Visando facilitar essa recuperação do parâmetro passado através da URL, foi disponibilizada na versão 2.X do
Demoiselle Framework uma funcionalidade através da interface Parameter
e de sua implementação ParameterImpl, que permite capturar esse valor através do uso de
injeção. Para isso, basta criar no seu Page Bean um objeto do tipo
br.gov.frameworkdemoiselle.util.Parameter e anotá-lo com @Inject.
O nome desse objeto é o nome que será usado para buscar o valor do parâmetro. Caso o usuário queira dar um
nome diferente ao objeto, ele pode anotá-lo com @Name e no valor dessa anotação, colocar o
nome do parâmetro. Por default o objeto criado tem o escopo de request, mas é possível usar o escopo de sessão
ou de visão, bastando anotar o objeto com @SessionScoped ou @ViewScoped,
respectivamente. Veja abaixo como ficaria essa passagem de parâmetros na versão 2.X do Demoiselle.
Passagem do parâmetro
Captura do parâmetro pelo Page Bean
parametro;
@Name("parametroString")
@SessionScoped
@Inject
private Parameter objetoComNomeDiferenteDoParametro;
}]]>
As classes de parâmetro
A interface Parameter e sua implementação ParameterImpl disponibilizam
alguns métodos, como setValue(T value), getKey(),
getValue() e getConverter(), que servem respectivamente para atribuir o
valor do objeto, capturar o nome do parâmetro passado na URL, recuperar o valor passado para aquele parâmetro
e capturar o conversor de tipo utilizado. Logo, para usar o valor daquele objeto, basta utilizar o método
getValue(), tal como mostrado a seguir:
parametro;
public void metodo() {
System.out.println("Valor do parâmetro: " + parametro.getValue());
}
}]]>