Erro no reRender(RESOLVIDO)

5 respostas
F

Tenho o seguinte codigo:

<!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"
	xmlns:c="http://java.sun.com/jstl/core">

<ui:composition template="template.xhtml">
<a4j:keepAlive beanName="pController"/>
	<ui:define name="titulo">Titulo</ui:define>
	<ui:define name="content">
		<div id="formulario">
		<fieldset><legend>Dados do Registro</legend> <h:panelGrid
			columns="3" styleClass="panelGrid"
			columnClasses="pgColumn1,pgColumn2,pgColumn3" id="panel">
			
			<h:outputText value="Titular" styleClass="saidaTexto"
				for="titular" />
			<h:inputText id="titular" value="#{pController.p.codigo}"
				size="15" required="true" requiredMessage="Campo Obrigatório">
			<a4j:support event="onblur" reRender="resultadoTitular" />
			</h:inputText>
			<h:message for="titular" styleClass="message" />

			<div id="nomeTitular">
			<h:panelGroup id="resultadoTitular">
				<h:outputText value="#{pController.existeProfissional}"/>
			</h:panelGroup></div>
			
			<h:outputText value="Data de Início" styleClass="saidaTexto"
				for="dataInicio" />
			<h:inputText id="dataInicio"
				value="#{pController.p.datainicio}"
				required="true" requiredMessage="Campo obrigatório" size="7">
				<f:convertDateTime type="date" pattern="dd/MM/yyyy"
					dateStyle="medium" locale="pt,BR" />
				<rich:jQuery selector="#dataInicio" query="mask('99/99/9999')"
					timing="onload" />
			</h:inputText>
			<h:message for="dataInicio" styleClass="message" />

			<h:outputText value="Data do Término" styleClass="saidaTexto"
				for="dataTermino" />
			<h:inputText id="dataTermino"
				value="#{pController.p.datatermino}"
				required="true" requiredMessage="Campo obrigatório" size="7">
				<f:convertDateTime type="date" pattern="dd/MM/yyyy"
					dateStyle="medium" locale="pt,BR" />
				<rich:jQuery selector="#dataTermino" query="mask('99/99/9999')"
					timing="onload" />
			</h:inputText>
			<h:message for="dataTermino" styleClass="message" />

		</h:panelGrid></fieldset>
				<br />
		<hr />
		<h:panelGrid columns="2">
			<a4j:commandLink action="#{pController.salvar}" reRender="panel">
				<h:graphicImage value="/imagens/site/salvar.gif"
					style="border: none;" alt="Salvar" />
			</a4j:commandLink>
		</h:panelGrid>
</div>
	</ui:define>
</ui:composition>

</html>

No inputtext Titular é digitado o código do mesmo e ao sair do inputtext é feita uma consulta q trará o nome do respectivo em um panelgrid q será renderizado no momento q sair do inputtext, só q não está acontecendo, sempre q digito o codigo do titular e saio, no console é mostrada a mensagem de erro:

07/05/2010 10:29:05 com.sun.faces.lifecycle.RenderResponsePhase execute
INFO: WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=form1:dataInicio[severity=(ERROR 2), summary=(Campo obrigatório), detail=(Campo obrigatório)]
sourceId=form1:dataTermino[severity=(ERROR 2), summary=(Campo obrigatório), detail=(Campo obrigatório)]

agora, se eu digitar primeiro as datas, ele faz normalmente;

a verificação de Campo Obrigatório está sendo feita quando saio do inputtext e gostaria q fosse feita quando eu clicasse no botão Salvar.

5 Respostas

walacy

Está faltando isso pelo jeito:

&lt;h:messages id="messages" globalOnly="true"/&gt;

Você está lançando uma mensagem e não está renderizando-a.

Se não funcionar, tenta assim:

&lt;a4j:outputPanel ajazRendered="true"&gt;
    &lt;h:messages id="messages" globalOnly="true"/&gt;
&lt;/a4j:outputPanel&gt;

Verifica se não escrevi errado… fiz de cabeça…

F

Continua na mesma Walacy.

walacy

Tenta usar “ajaxSingle” true naquele seu evento no “onblur”.

F

Walacy deu certo, obrigado.

Esse ajaxSingle está dizendo q só o q estiver no reRender será renderizado, é isso?

walacy

ajaxSingle é para só submeter o campo no qual o evento está… Se você quiser submeter mais algum é só especificar no atributo “process”.

Para renderizar só o que estiver no “reRender” tem que colocar o atributo “limitToList” true. :wink:

(Não esquece de colocar [RESOLVIDO] no primeiro post… :wink: )

Abraço!

Criado 7 de maio de 2010
Ultima resposta 7 de mai. de 2010
Respostas 5
Participantes 2