Boa tarde colegas!
Nesse sistema uso JSF 1.2, Facelets 1.1.14, RichFaces 3.2.1 EJB 3.0 JBoss 4.2.2
Estou enfrentando o seguinte problema, toda vez que dou um submit no meu formulário em alguma coisa que tenha A4J support ou mesmo um <a4j:commandButton /> os campos que estão “bindados” a atributos do meu ManagedBean não são recuperados.
Seja pelo Value ou pelo Binding, nenhum recupera o valor que desejo =/
E isso só acontece quando uso o a4j:support e o a4j:commandButton E sempre com os <h:inputText>
Alguém tem alguma mínima idéia do que possa ser?!
Já tentei N variações de combinações e nada funciona, sempre retorna nulo!
Abraços!
para que tipo de função você está usando o Binding ? Coloque seu codigo pra gente ver.
Coloque o codigo aqui pra vermos…
vc esta usando o atributo immediate=“true” ?
se sim, nao o use… tire e faça o teste.
Não estou usando imeediate=true.
É verdade, o código, aqui vai um pedaço do xhtml:
<a4j:form id="formAprovacao">
...
<h:selectOneMenu binding="#{GeracaoPedidoCompraBean.selectFiltroFornecedor}" id="selectFiltroFornecedorModal" >
<f:selectItems value="#{GeracaoPedidoCompraBean.supplierFilterItems}" />
</h:selectOneMenu>
<h:inputText value="#{GeracaoPedidoCompraBean.filtroFornecedor}" id="inputfiltrosupplier" />
<a4j:commandButton ajaxSingle="true" value="#{msg.gnrSupplierBtnSearch}" action="#{GeracaoPedidoCompraBean.pesquisarFornecedor}" />
<h:commandButton value="#{msg.gnrSupplierBtnSearch}" >
<a4j:support ajaxSingle="true" action="#{GeracaoPedidoCompraBean.pesquisarFornecedor}" event="onclick" />
</h:commandButton>
...
</a4j:form>
E aqui os métodos do meu Managed Bean:
...
private String filtroFornecedor;
private HtmlInputText filtroSupplier;
private HtmlSelectOneMenu selectFiltroFornecedor;
private List<SelectItem> supplierFilterItems = new ArrayList<SelectItem>();
...
public void pesquisarFornecedor() {
System.out.println("QTD ITENS: " + pedido.getQuantidadeItens());
System.out.println("<------------pesquisarFornecedor()------------>");
System.out.println("select: " + (String) getSelectFiltroFornecedor().getValue());
System.out.println("filtro: " + getFiltroFornecedor());
...
}
Os bindings e values estão setados dessa forma ali no xhtml, como vcs podem ver no ManagedBean estou tentando recuperar esse valor pelos atributos que estão atrelados a esses componentes, mas não consigo pegar nada de volta quando existe a4j envolvido…
Se alguém tiver alguma luz, eu agradeceria muito pela ajuda.
Abraços!
Você faz o reRender no form??
Da uma olhada nesse tópico que talvez pode te ajudar:
http://www.guj.com.br/posts/list/126387.java#682888
[quote=cristiano.andrade]Você faz o reRender no form??
Da uma olhada nesse tópico que talvez pode te ajudar:
http://www.guj.com.br/posts/list/126387.java#682888[/quote]
Cara, não dei reRender no form não…
Então, esse post resolveu o meu problema de capturar o valor dos campos do form no ManagedBean, porém trombei no mesmo problema do colega do tópico, quando executo algum outro evento de A4J perco os valores que já estão preenchidos no form.
Alguém saberia me auxiliar?!
Abraços!
use o a4j:region para limitar o que é processado pela requisição AJAX.
cara primeiro você deve usar ao inves do binding o action, e outra coisa é que no managedbean você nao está retornando uma lista de SelectItem.
Você poderia ser um pouco mais específico?
Estou fazendo uns testes aqui com a4j region e ainda assim perco os valores dos inputs =/
Vlw!
Pessoal tambem estava com o mesmo problema resolvi com um a4j:region coloquei todos os inputs que precisava dentro dele e não utilizei nem ajaxsingle e nem process assim ele envia todos campos dentro a4j:region na requisição ajax só assim o problema foi resolvido.
Ps Em meus testes com a dupla de tags process + ajaxsingle só funcionou com dois campos no meu caso não resolveu uma outra solução seria colocar o backingbean com scopo de session.