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.
sexta-feira, 20 de setembro de 2013
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>
<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"/>
<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 >
<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 >
<f: selectItem itemLabel ="Selecione um item" noSelectionOption =" true "/>
<f: selectItems
value ="#{cidadesBean.cidades}"
var ="cidade"
itemValue ="#{cidade}"
itemLabel ="#{cidade.nome}" />
</h: selectOneMenu >
Assinar:
Postagens (Atom)