[RESOLVIDO]Problema: a4j:commandButton - a4j:include, action não funciona!

3 respostas
D

Olá a todos.

Pessoal, no meu projeto, estou usando uma página index com um menu principal, a cada vez que um usuário escolhe um menu para entrar, ele da um include numa página jsp renderizando a página escolhida e o menu fica sempre lá, sem precisar ser renderizado.

O problema, é que meu a4j:commandButton (o action) que está dentro da página que recebeu o include pelo menu, não funciona. Se eu chamar esta mesma página, independente do INCLUDE, ai o action funciona. Nenhum erro aparece no log, simplesmente nada acontece ao pressionar o botão.

Se eu por immediate=“true”, o action funciona, por outro lado, os métodos dos inputText ficam todos null’s aí não adianta nada. Já tentei também, h:commandButton, tentei até mesmo h:commandLink (apesar de ficar feio), mas não funciona.

Alguém sabe o que é isso? Aí vai o código da página que recebe o include. Já procurei por horas e não achei solução.

<%@ taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@ taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Cadastro de Conta</title>
</head>
<body>
<f:view>
	<h:form>
		<rich:panel header="Criar Conta" id="panelConta"
			style="left: 300px; width : 750px; height : 345px; top: 125px; position : absolute;">

			<h:panelGrid columns="1">
				<h:panelGroup id="grupo1">
					<h:outputText value="Digite seu Saldo em Conta: " />
					<rich:spacer width="16" />
					<h:inputText value="#{ViewConta.conta.saldoConta}" />
				</h:panelGroup>
				<h:panelGroup id="grupo2">
					<h:outputText value="Digite seu Usuário: " />
					<rich:spacer width="16" />
					<h:inputText value="#{ViewConta.nome}" />
				</h:panelGroup>
				<h:panelGroup id="grupo3">
					<h:outputText value="Digite sua Senha: " />
					<rich:spacer width="16" />
					<h:inputSecret value="#{ViewConta.senha}" />
				</h:panelGroup>
				<h:outputText value="#{ViewConta.mensagem}" id="mensagem" />
				<h:panelGroup style="left: 130px; top: 100px; position: absolute;">
						<h:panelGrid columns="4">
							<rich:spacer width="50" />
							<a4j:commandButton value="Cadastrar" action="#{ViewConta.incluir}"/>
						</h:panelGrid>
				</h:panelGroup>
			</h:panelGrid>

		</rich:panel>
	</h:form>
</f:view>
</body>
</html>

Obrigado!

3 Respostas

T

experimente colocar a4j:form no lugar do <h:form>.

D

Oi Thiago,

Obrigado pela atenção…

Eu testei e não consegui, tipo, até coloco um break pra garantir, mas mesmo assim, eu aperto o a4j:commandButton e nada acontece…

já tentei tantas coisas, tantas horas, achei até um site em inglês, foi a unica coisa…

link: https://jira.jboss.org/jira/browse/RF-4710?page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel

so que pra dizer a verdade, n entendi qual a solução deles. O problema n eh nem o site ser em ingles…

alguma outra idéia?

obrigado ae!

Maurício…

D

Pessoal,

achei a solução depois de um longo dia no trabalho e observando um pouco da codificação de lá:

Solução:

Primeiro ponto, no meu código que eu postei acima, estava usando

<f:view>
<h:form>
//codigo postado acima
</h:form>
</f:view>

primeiramente, tirei os f:view e tirei também os h:form, deixei sem nenhum dos dois.

lá na tela onde tinha o meu include estava + - assim

//codigo jsp…
<f:view>
<h:form>

<h:form>

a4j:include

</f:view>

agora que eu ajeitei, eu coloquei assim:

//codigo jsp…
<f:view>
<h:form>

<h:form>

<h:form>
a4j:include
</h:form>

</f:view>

ou seja, um formulário proprio para o include, e vale ressaltar que o f:view estava sendo usado 2x, eu tirei e deixei apenas uma, pq toda página que recebe include faz parte da página que está incluindo, então não precisa de dois f:view.

é isso,

flw pessoal, obrigado ai!!

Criado 28 de maio de 2009
Ultima resposta 29 de mai. de 2009
Respostas 3
Participantes 2