* Visite o ALJUG - http://aljug.blogspot.com - Noticias sobre a comunidade java alagoana e do mundo * Visite o blog Mundo Gamificado www.mundogamificado.com.br - E vamos mudar o mundo! *

domingo, 12 de julho de 2015

Componentes Dinâmicos com Primefaces - Parte 2

Olá pessoal, vamos continuar com os componentes dinâmicos através do bean.

Como já declaramos o componente PanelGrid no construtor do bean e como já criamos o código na view, vamos para próximo passo.

vamos fazer um metodo chamado criarPanel(); , void mesmo como abaixo:


 public void criarPanel(){ } 

Nele vamos colocar dentro o InputText e OutputLabel. Se quiser criar mais de um, então use a estrutura de repetição FOR, por exemplo, quero criar 6 componentes, então usaremos da seguinte forma:


 for(int i= 0; i < 6; i++){
  //Código, que vai ser explicado abaixo.
}

Dentro deste for iremos atribuir valor aos componentes para isso devemos pegar o contexto, para isso existe o FacesContext, do pacote javax.faces.context.FacesContext, com o método getCurrentInstance() como abaixo:

FacesContext.getCurrentInstance().getApplication().createComponent(OutputLabel.COMPONENT_TYPE);

No código acima pegamos o contexto, sua aplicação com isso criamos o componente e dentro do metodo createComponent declaramos qual o componente que queremos, neste caso o OutputLabel, só que todo esse código não é do tipo OutputLabel e por isso temos que fazer um cast.


 
opl = (OutputLabel) FacesContext.getCurrentInstance().getApplication().createComponent(OutputLabel.COMPONENT_TYPE);


in = (InputText) FacesContext.getCurrentInstance().getApplication().createComponent(InputText.COMPONENT_TYPE);

Depois temos que pegar separado, primeiro o contexto atual, depois o contexto da expression Language o ELContext, depois a aplicação para poder decalrar uma fabrica de expressão, como podemos ver no código abaixo:


context = FacesContext.getCurrentInstance();

elContext = context.getELContext();

Application app = context.getApplication();

ExpressionFactory expressionFactory = app.getExpressionFactory();


Com isso já estamos quase acabando, para o post não ficar tão grande, vamos parar por aqui e continuar na próxima semana.

Qualquer dúvida pode fazer um comentário que eu terei o maior prazer de responder, até mais!

Nenhum comentário: