sexta-feira, 20 de setembro de 2013

JSF - Exemplo de utilização do ValueChangeEvent

Um ValueChangeEvent é gerado quando o valor de uma caixa de texto ou a opção de uma
caixa de seleção são alterados.

<h: outputLabel value ="Nome: " for ="nome" />
<h: inputText valueChangeListener ="#{usuarioMB.teste}" id="nome" />

@ManagedBean
public class usuarioBean{
     public void teste( ValueChangeEvent e) {
          System . out . println ("Nome anterior: " + e. getOldValue ());
          System . out . println ("Nome atual: " + e. getNewValue ());
     }
}

ou

<h: outputLabel value =" Preço : " for =" preco " />
 <h: inputText id=" preco ">
     <f: valueChangeListener type ="br.com.alexandrepalmeira.TesteChangeListener" />
</h: inputText >


package br.com.alexandrepalmeira;

public class TesteChangeListener implements ValueChangeListener {
     @Override
     public void processValueChange (ValueChangeEvent e) {
          System . out . println ("Nome anterior: " + e. getOldValue ());
          System . out . println ("Nome atual: " + e. getNewValue ());
     }
}


Os métodos são executados na fase Process Validations.

JSF - Associar mais de dois métodos a um evento


<h: commandLink value ="Salvar" action ="acao1" actionListener ="acao2">
     <f: actionListener type ="br.com.alexandrepalmeira.MudarCor"/> // acao3 ...
</h: commandLink >


br.com.alexandrepalmeira;
public class MudarCor implements ActionListener {
     @Override
     public void processAction ( ActionEvent e) {
          UICommand c = ( UICommand ) e. getComponent ();
          c. getAttributes (). put(" style ", " color : red ;");
     }
}

quinta-feira, 19 de setembro de 2013

JSF - Considerar strings vazia como null

Adicionar no Web.xml

<context-param>
     <param-name>
          javax.faces.INTERPRET_EMPTY_STRING_SUBMITTED_VALUES_AS_NULL
     </param-name>
     <param-value>true </param-value>
</context-param>

JSF - Exemplo de f:validateRegex

Verificando se a propriedade tem pelo menos 5 e no máximo 10 letras.

<h: inputText value ="#{bean.codigo}" id="codigo">
     <f: validateRegex pattern ="[a-zA -Z ]{5 ,10} "/>
</h: inputText >
<h: message for ="codigo"/>

JSF - Exibir dados na forma de porcentagem

<h: outputText value ="#{bean.numero}" >
     <f: convertNumber type =" percent " />
</h: outputText >

JSF - Criar managed bean de aplicação quando a aplicação é incializada


@ManagedBean (eager = true)
@ApplicationScoped
 class managedBean{

}

Se não for definido como eager, o managed bean será criado apenas quando for utilizado pela primeira vez

JSF - Exemplo de UI:REPEAT


<h: outputText value ="Alunos:" />
 <ul >
 <ui: repeat value ="#{alunoMB.alunos}" var ="aluno">
 <li >
 <h: outputText value ="#{aluno.nome}" />
 </li >
 </ui: repeat >
 </ul >

Resultado

Alunos
 <ul >
 <li >João </li >
 <li >Maria </li >
 <li >Paulo </li >
 </ul >

JSF - Comentar ou excluir partes de código XHTML


<h: outputText value =" Nome : #{usuarioMB . nome}" />
<ui: remove >
     <h: outputText value =" Sobrenome : #{usuarioMB.sobrenome}" />
</ui: remove >

Dessa forma o código dentro do ui:remove não será processado pelo JSF. Se você comentar o código com <!-- xxx --> o JSF vai processar o código comentado, executar as chamadas ao bean, porém, não vai exibir o resultado na tela.

JSF - h:selectOneMenu sem valor default

<h:selectOneMenu value ="#{cidadesBean.cidadeEscolhida}">
     <f: selectItem itemLabel ="Selecione um item" noSelectionOption =" true "/>
     <f: selectItems
          value ="#{cidadesBean.cidades}"
          var ="cidade"
          itemValue ="#{cidade}"
          itemLabel ="#{cidade.nome}" />
</h: selectOneMenu >