pessoal estou com um problema, estou desenvolvendo uma aplicação com JSF ea4j
a intenção é ler um código de barras, interpreta-lo e exibir os valores para o usuário,
mas no momento de atualizar os valores nada acontece, se possivel gostaria de ajuda
segue abaixo o xhtml
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich"
template="./template.xhtml">
<ui:define name="title">
Teste
</ui:define>
<ui:define name="body">
<h:form>
<h:panelGrid>
<p><a href="template-client.jsf">Home</a></p>
</h:panelGrid>
</h:form>
<h:panelGroup>
<h:panelGrid columns="2">
<a4j:status id="status">
<f:facet name="start">
<h:outputText value="Aguarde a interpretação do boleto"/>
</f:facet>
</a4j:status>
</h:panelGrid>
</h:panelGroup>
<h:form>
<h:panelGroup>
<h:panelGrid columns="2">
<h:outputLabel for="codigoBarras" value="#{boleto.codigoBarras}"/>
<h:inputText id="codigoBarras"
size="44"
immediate="true"
value="#{boletoController.codigoBarras}"
required="true">
<f:validateLength minimun="44"
maximum="44"/>
<f:validator validatorId="contaspagarweb.controller.CodeValidator"/>
<a4j:support event="onblur"
immediate="true"
actionListener="#{boletoController.boletoAction}"
reRender="identificacaoBanco"/>
</h:inputText>
<h:outputText id="errorMessage"
value="#{boletoController.errorMessage}"
style="color: red; font-style: italic;"/>
</h:panelGrid>
<h:panelGrid columns="2">
<h:outputLabel id="identificacaoBanco" for="identificacaoBanco" value="#{boleto.codigoBanco}"/>
<h:inputText binding="#{boletoController.identificacaoBancoInput}"
size="20" value="#{boletoController.identificacaoBanco}"/>
</h:panelGrid>
</h:panelGroup>
</h:form>
</ui:define>
</ui:composition>
abaico o meu controller
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package contaspagarweb.controller;
import br.com.jcomputacao.contaspagar.LeitorCodigoDeBarras;
import br.com.jcomputacao.contaspagar.bean.BoletoBean;
import br.com.jcomputacao.contaspagar.model.Boleto;
import java.util.Iterator;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIInput;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
/**
*
* @author ADM
*/
public class BoletoController extends javax.faces.component.UIPanel {
private UIInput identificacaoBancoInput = null;
private BoletoBean bean = new BoletoBean();
private Boleto boleto = bean.getboleto();
private String errorMessage = null;
private String codigoBarras;
private String identificacaoBanco;
public Boleto getBoleto() {
return boleto;
}
public void setBoleto(Boleto boleto) {
this.boleto = boleto;
}
public String getCodigoBarras() {
return codigoBarras;
}
public void setCodigoBarras(String codigoBarras) {
this.codigoBarras = codigoBarras;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public String getIdentificacaoBanco() {
return identificacaoBanco;
}
public void setIdentificacaoBanco(String identificacaoBanco) {
this.identificacaoBanco = identificacaoBanco;
}
public UIInput getIdentificacaoBancoInput() {
return identificacaoBancoInput;
}
public void setIdentificacaoBancoInput(UIInput identificacaoBancoInput) {
this.identificacaoBancoInput = identificacaoBancoInput;
}
public void interpretaBoleto(String codigo) {
LeitorCodigoDeBarras lcd = new LeitorCodigoDeBarras();
boleto = lcd.leituraCodigoDeBarras(codigo);
bean.setboleto(boleto);
setCamposBoleto(boleto);
}
public void boletoAction(ActionEvent evt) {
try {
Thread.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
UIInput input = (UIInput) evt.getComponent().getParent();
if (input != null) {
String codigo = (String) input.getLocalValue();
if (codigo != null) {
interpretaBoleto(codigo);
}
FacesContext fc = FacesContext.getCurrentInstance();
input.validate(fc);
if (!input.isValid()) {
setErrorMessage(fc, input);
identificacaoBancoInput.setSubmittedValue(null);
}
}
}
private void setErrorMessage(FacesContext fc, UIInput input) {
Iterator it = fc.getMessages(input.getClientId(fc));
if (it.hasNext()) {
FacesMessage facesMessage = (FacesMessage) it.next();
errorMessage = facesMessage.getSummary();
}
}
private void setCamposBoleto(Boleto boleto) {
if (boleto != null) {
String codigoBanco = boleto.getIdentificacaoBanco().toString();
setIdentificacaoBanco(codigoBanco);
}else{
setErrorMessage(errorMessage);
}
}
}