H:commandButton não funciona com a4j:support

3 respostas
L

Estou usando o netbeans para construir uma aplicação em jsf.
Tenho dois h:selectOneMenu e quando o usuário seleciona o primeiro, o segundo é preenchido de acordo com o selecionado.
Após selecionar o segundo ele poderá clicar em próximo que vai para uma próxima página.
Se ele entra direto e clica em next, ele consegue ir para a próxima página, contudo se ele escolher algo no primeiro selectOneMenu,
o segundo é preenchido, só que dai ele pode clicar em next que a requisição não vai para um próxima pagina.

As regras de navegação estão definidas no faces-config.xml

<h:form id="form">
                    <h:selectOneMenu value="#{pesquisa.estadoID}" id="estado"  >
                        <f:selectItem itemLabel="Selecione o Estado"/>
                        <f:selectItems value="#{pesquisa.buscaEstados}" />
                        <a4j:support event="onchange" reRender="cidades"  />
                    </h:selectOneMenu>
                    <h:selectOneMenu value="#{pesquisa.cidadeID}" id="cidades"  >
                        <f:selectItem itemLabel="Selecione a Cidade"/>
                        <f:selectItems value="#{pesquisa.buscaCidades}" />
                    </h:selectOneMenu>
                    <h:commandButton action="detalhar" value="Detalhar" />
                </h:form>
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
    </servlet-mapping>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.jsp</param-value>
    </context-param>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <filter>
        <display-name>RichFaces Filter</display-name>
        <filter-name>richfaces</filter-name>
        <filter-class>org.ajax4jsf.Filter</filter-class>
        <init-param>
            <param-name>enable-cache</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>richfaces</filter-name>
        <servlet-name>Faces Servlet</servlet-name>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
    </filter-mapping>
    <welcome-file-list>
        <welcome-file>start.jsp</welcome-file>
    </welcome-file-list>
</web-app>

3 Respostas

thiago.correa

Teste o a4j:commandButton ao invés do commandButton com ajaxSupport

L

Bem que eu tentei, mais não deu não.

<a4j:commandButton action="detalhar" id="detalhar" value="detalhar" />

Eu segui o exemplo que esta na DevMedia para o reRender, pena que não esta 100%.
Se puder ajudar, fico grato.

L

Problema resolvido.

O erro estava porque a página tinha um erro de validação e quando isso acontece não termina todo o processo.

A form isn?t submitted or a setter isn?t called after AJAX request
This situation could happen because of conversion/validation errors on form submission. In order to verify this, it?s necessary to place this updating via AJAX error message inside a form:
<a4j:outputPanel ajaxRendered=“true”>
<h:messages/>
</a4j:outpurPanel>
https://ajax4jsf.dev.java.net/nonav/documentation/ajax-documentation/developerGuide.html

Resolvido esse problema, tive um outro, que achei a resposta aqui, que é a questão do tempo de vida dos manage beans
<a4j:keepAlive beanName=“pesquisa” />
http://www.guj.com.br/posts/list/48462.java

Obrigado Pessoal

Criado 11 de outubro de 2010
Ultima resposta 12 de out. de 2010
Respostas 3
Participantes 2