É preciso dar 2 clicks para a pagina JSF chamar o BackingBean

5 respostas
D

Eu já fiz diversos testes nas minhas páginas em JSF2.0 e sempre ocorre o mesmo problema: o primeiro click a tela simplesmente pisca e no segundo click é que o BackingBean é chamado.

Eu uso JSF2 e Richfaces 4 com templates

Segue aqui um exemplo de uma pagina XHTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:a4j="http://richfaces.org/a4j"
	xmlns:rich="http://richfaces.org/rich">

<f:view locale="#{localeController.currentLocale}">
	<body>
		<ui:composition template="/templates/template_menu.xhtml">

			<ui:define name="title">#{msgs['titulo.sistema']}</ui:define>
			<ui:define name="body">
				<rich:panel id="popup" modal="true" resizeable="true" width="600"
					height="400">
					<f:facet name="header">
						<h:outputText value="#{msgs['requerente.cadastro.titulo']}" />
					</f:facet>
					<h:form id="formCadastrarAct">
						
						<h:outputText value="#{msgs['cadastro.act.id']}:" />
							style="vertical-align:top;" />
						<h:inputTextarea
							value="#{actBB.act.id}}" id="nome"
							required="true" size="40"
							validatorMessage="#{msgs['requerente.mensagem.validacao.descricao']}"
							requiredMessage="#{msgs['requerente.mensagem.validacao.descricao']}"
							style=" height : 59px; width : 447px;">
							<f:validateLength minimum="3" maximum="600" />
						</h:inputTextarea>
						<rich:message id="nomeMsg" for="desc" />
	
	
	
						<h:outputText value="#{msgs['cadastro.act.nome']}:" />
						<h:inputTextarea value="#{actBB.act.nome}}"
							id="nome" required="true"
							requiredMessage="#{msgs['requerente.mensagem.requerido.email']}"
							style="height : 59px; width : 447px;">
						</h:inputTextarea>
						<rich:message id="nomeMsg" for="link" />						
	
	
						<h:outputText value="#{msgs['cadastro.act.dns']}:" />
						<h:inputTextarea value="#{actBB.act.dns}}"
							id="dns" required="true"
							requiredMessage="#{msgs['requerente.mensagem.requerido.email']}"
							style="height : 59px; width : 447px;">
						</h:inputTextarea>
						<rich:message id="dnsMsg" for="dns" />						
	
	
						<h:outputText value="#{msgs['cadastro.act.politica']}:" />
						<h:inputTextarea value="#{actBB.act.politica}}"
							id="politica" required="true"
							requiredMessage="#{msgs['requerente.mensagem.requerido.email']}"
							style="height : 59px; width : 447px;">
						</h:inputTextarea>
						<rich:message id="politicaMsg" for="politica" />						
						
						<br />
						<br />
						<a4j:commandButton action="#{actBB.salvar}" value="Salvar"
							render="confirmaCadastro"
							oncomplete="if(#{ataNotarialBB.ataSalva}) {#{rich:component('cadastroPane')}.show();}"/>
					</h:form>
				</rich:panel>
				<rich:popupPanel id="cadastroPane" autosized="true">
					<f:facet name="header">
						<h:outputText value="#{msgs['requerente.cadastro.titulo']}" />
					</f:facet>
					<h:form>
						<h:panelGroup id="confirmaCadastro">
            #{msgs['act.mensagem.cadastro.sucesso']}<br />
							<br />
							<div align="center">
								<h:commandButton value="OK"
									action="#{clientesBean.acaoCadastroSucesso}" />
							</div>

						</h:panelGroup>
					</h:form>
				</rich:popupPanel>
				<a4j:status onstart="#{rich:component('statPane')}.show()"
					onstop="#{rich:component('statPane')}.hide()" />
				<rich:popupPanel id="statPane" autosized="true">
					<h:graphicImage value="/img/ai.gif" alt="ai" />
            #{msgs['mensagem.aguarde']}
        </rich:popupPanel>

			</ui:define>
		</ui:composition>
	</body>
</f:view>
</html>

5 Respostas

lele_vader

Isso acontece após algumas operações, por exemplo fez um cadastro e logo após aconteceu isso ?

Ou quando abre a tela e você clica em algo já ocorre isso ?

jeffev

lele_vader:
Isso acontece após algumas operações, por exemplo fez um cadastro e logo após aconteceu isso ?

Ou quando abre a tela e você clica em algo já ocorre isso ?

Pra mim está ocorre quando faço alguma operação, acredito ser algum problema em um form, mas ainda não consegui identificar.

lele_vader

Isso também ocorre comigo com um extendedDataTable do richfaces.
Faz um teste.
Coloca um método com @PostConstruct e vê se entra lá.
Comigo está acontecendo isso.
Após um update ou delete a primeira requisição ia para o PostConstruct e nada acontecia.
Daí na segunda vez ele fazia a operação.
Não identifiquei ainda a causa do problema, talvez algo com o ajax.

D

lele_vader e jeffev, estou quebrando a cabeça por causa disso. Realmente não tem muito sentido. Infelizmente este erro está ocorrendo no meu projeto de tcc e eu vou ter que reescrever o projeto todo pois não consigo me livrar deste erro.

Comigo a situação é a mesma, parece que alguma função ajax fica sendo chamada constantemente. por acaso vocês usam jsf 2 e richfaces 4.X?

D

Se puderem postar o seu código eu agradeço (do jsf), pois pelo que eu li o problema parece nas tags Rendered de componentes.

O problema no meu caso parece ocorrer nisso mesmo. Vou tentar remover todos os rendered e ver o que acontece.

Fonte: http://stackoverflow.com/questions/5961119/problem-with-fajax-in-jsf-requiring-double-clicks-to-execute

Criado 10 de outubro de 2012
Ultima resposta 23 de out. de 2012
Respostas 5
Participantes 3