Campos Obrigatórios - rich:modalPanel (JSF)

Pessoal,

Estou com problema em um formulário de cadastro dentro de um rich:modalPanel pois não estou conseguindo validar os campos obrigatórios. Ou seja, quando pressiono o botão salvar é retornado para uma tela onde lista todos os registros cadastrados e não permanece no modalPanel informando que não foi feito o cadastro pois existiam campos obrigatórios que não foram preenchidos. Quando entro novamente no panel de cadastro, aparece a tela com as mensagens de campos obrigatórios não preenchidos.

O que posso fazer para permanecer no formulario do rich:modalPanel ate que se informe os dados obrigatórios sem que o mesmo feche sem essas informações?

 <rich:modalPanel id="panelNovo" width="950" height="880">
	<rich:panel id="panelCadastroUsuario" header="Cadastro de Config Formatação">  
	<h:form id="formPanel">
		<f:facet name="header">
			<h:panelGroup>
				<h:outputText value="Cadastro de Config Formatação"></h:outputText>
			</h:panelGroup>
		</f:facet>
		  
		<h:inputHidden id="validateCreateField" value="#{configFormatacaoControle.configFormatacao.idConfigFormatacao}" />
		
		&lt;h:outputText value="Descricao: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="descricao" value="#{configFormatacaoControle.configFormatacao.descricao}" title="Descrição" size="100" /&gt;<br />

		&lt;h:outputText value="Nome EJB: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="nomeEjb" value="#{configFormatacaoControle.configFormatacao.nomeEjb}" title="Nome Ejb" size="100" required="true" requiredMessage="O Campo Nome EJB é obrigatório."/&gt;&nbsp;&nbsp;&lt;h:message for="nomeEjb" styleClass="camposObrigatorios"/&gt;<br />
		
		&lt;h:outputText value="Serviço: " styleClass="fontFields"/&gt;<br />
		&lt;h:selectOneMenu id="cbServico" 
			value="#{configFormatacaoControle.configFormatacao.tbServico}" rendered="true" immediate="true" converter="#{configFormatacaoControle.converter}"&gt;
			&lt;f:selectItems value="#{configFormatacaoControle.listaServicosCombo}" /&gt;
		&lt;/h:selectOneMenu&gt;<br />
	
		&lt;h:outputText value="Path Raiz Linux: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="pathRaizLinux" value="#{configFormatacaoControle.configFormatacao.pathRaizLinux}" title="Path Raiz Linux" size="100" /&gt;<br />

		&lt;h:outputText value="Path Raiz Windows: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="pathRaizWindos" value="#{configFormatacaoControle.configFormatacao.pathRaizWindos}" title="Path Raiz Windows" size="100" /&gt;<br />
		
		&lt;h:outputText value="Diretorio Spool: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="diretorioSpool" value="#{configFormatacaoControle.configFormatacao.diretorioSpool}" title="Diretorio Spool" size="100" required="true" requiredMessage="O Campo Diretorio Spool é obrigatório."/&gt;
		&nbsp;&nbsp;&lt;h:message for="diretorioSpool" styleClass="camposObrigatorios"/&gt;<br />
			
		&lt;h:outputText value="Diretorio Processamento: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="diretorioProcessamento" value="#{configFormatacaoControle.configFormatacao.diretorioProcessamento}" title="Diretorio Processamento" size="100" required="true" requiredMessage="O Campo Diretorio Processamento é obrigatório."&gt;
		&lt;/h:inputText&gt;&nbsp;&nbsp;&lt;h:message for="diretorioProcessamento" styleClass="camposObrigatorios"/&gt;<br />
		
		&lt;h:outputText value="Diretorio Liberados: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="diretorioLiberados" value="#{configFormatacaoControle.configFormatacao.diretorioLiberados}" title="Diretorio Liberados" size="100"&gt;
		&lt;/h:inputText&gt;<br />		
		
		&lt;h:outputText value="Path Armazenamento: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="pathArmazenamento" value="#{configFormatacaoControle.configFormatacao.pathArmazenamento}" title="Path Armazenamento" size="100" /&gt;	<br />
		
		&lt;h:outputText value="Gera Gravação Serviço: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="geraGravacaoServico" value="#{configFormatacaoControle.configFormatacao.geraGravacaoServico}"&gt;  
  					&lt;f:selectItem itemLabel="Sim" itemValue="1" /&gt;  
  					&lt;f:selectItem itemLabel="Não" itemValue="0" /&gt;  
			&lt;/h:selectOneRadio&gt;<br />
			  
		&lt;h:outputText value="Gera SOS Laser: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="geraSosLaser" value="#{configFormatacaoControle.configFormatacao.geraSosLaser}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Grava Mídia: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="gravaMidia" value="#{configFormatacaoControle.configFormatacao.gravaMidia}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Grava Journal: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="gravaJournal" value="#{configFormatacaoControle.configFormatacao.gravaJournal}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Gera Numero Lote: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="geraNumeroLote" value="#{configFormatacaoControle.configFormatacao.geraNumeroLote}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Lote por Núcleo: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="lotePorNucleo" value="#{configFormatacaoControle.configFormatacao.lotePorNucleo}" &gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Xml Config Liberados: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputTextarea id="xmlConfigLiberados" value="#{configFormatacaoControle.configFormatacao.xmlConfigLiberados}" cols="75" /&gt;<br />
		
		&lt;h:outputText value="Dr Postagem: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="drPostagem" value="#{configFormatacaoControle.configFormatacao.drPostagem}" title="Dr Postagem" size="20" /&gt;<br />
									
		&lt;h:commandButton action="#{configFormatacaoControle.create}"
			value="Salvar" styleClass="jsfButton" /&gt;
		&lt;h:commandButton type="button" value="Close" styleClass="jsfButton"
			onclick="javascript:Richfaces.hideModalPanel('panelNovo')"/&gt; 
		<br /><br />
	&lt;/h:form&gt;
	&lt;/rich:panel&gt;	
	&lt;/rich:modalPanel&gt;

Valew!!

Olá alvimar, bom primeiro troque seu h:commandbutton por um a4j:commandButton, feito isto adicione ao seu a4j:commandButton um limitToList=“true”.

Creio q isto resolva teu problema!

[]'s

Tiago,

Eu fiz isso cara… e deu certo!

Mas tem um porém… estou tendo problemas com a4j no Internert Explorer. Já teve algum problema relacionado a isso?

Obrigado pela ajuda!

Que bom q funcionou cara, ñ tive problemas com a utilização do a4j:commandButton cara, se bem q vc falou q o problema é com o a4j, senão ia te sugerir voltar o h:commandButton e usar dentro dele o a4j:support e colocar a action/actionlistener nele e o a limitToList. Mas se teu problema for o a4j não vai funfar do mesmo jeito no ie.

A unica sugestão q possa dar é essa cara, mas quanto as dores de cabeça com navegadores o q posso te dizer é “bem vindo ao mundo web…” rsrsrss… so deus sabe o quanto sofro com navegadores, js, css…

[]'s

É verdade.
Eu ja tinha feito com a4j antes de me falar e mudei exatamente para o h:commandButton pelo problema no IE.
Sabe se tem alguma outra maneira de fazer isso? Talvez usando jquery?

Mensagem de erro no IE:

Mensagem: O objeto não dá suporte para a propriedade ou método
Linha: 166
Caractere: 390
Código: 0
URI: http://localhost:8080/EBilingOi/a4j/g/3_2_2.GAorg.ajax4jsf.javascript.AjaxScript.jsf

E é mostrado uma tela em branco ao submeter a pagina.

Qual versão do ie vc ta usando?

Ja tentou usar o modo de compatibilidade do ie?

Talves uma versão mais nova do richfaces resolva, ja pensou em testar?

Por ultimo e mais dificil seria alterar o javascript pra funcionar tb na sua versão do ie.

[]'s

Deu certo Thiago…

Peguei uma versão do richfaces mais nova e funfou…

Muito obrigado pelo ajuda cara!

[quote=alvimar henrique]Pessoal,

Estou com problema em um formulário de cadastro dentro de um rich:modalPanel pois não estou conseguindo validar os campos obrigatórios. Ou seja, quando pressiono o botão salvar é retornado para uma tela onde lista todos os registros cadastrados e não permanece no modalPanel informando que não foi feito o cadastro pois existiam campos obrigatórios que não foram preenchidos. Quando entro novamente no panel de cadastro, aparece a tela com as mensagens de campos obrigatórios não preenchidos.

O que posso fazer para permanecer no formulario do rich:modalPanel ate que se informe os dados obrigatórios sem que o mesmo feche sem essas informações?

 &lt;rich:modalPanel id="panelNovo" width="950" height="880"&gt;
	&lt;rich:panel id="panelCadastroUsuario" header="Cadastro de Config Formatação"&gt;  
	&lt;h:form id="formPanel"&gt;
		&lt;f:facet name="header"&gt;
			&lt;h:panelGroup&gt;
				&lt;h:outputText value="Cadastro de Config Formatação"&gt;&lt;/h:outputText&gt;
			&lt;/h:panelGroup&gt;
		&lt;/f:facet&gt;
		  
		&lt;h:inputHidden id="validateCreateField" value="#{configFormatacaoControle.configFormatacao.idConfigFormatacao}" /&gt;
		
		&lt;h:outputText value="Descricao: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="descricao" value="#{configFormatacaoControle.configFormatacao.descricao}" title="Descrição" size="100" /&gt;<br />

		&lt;h:outputText value="Nome EJB: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="nomeEjb" value="#{configFormatacaoControle.configFormatacao.nomeEjb}" title="Nome Ejb" size="100" required="true" requiredMessage="O Campo Nome EJB é obrigatório."/&gt;&nbsp;&nbsp;&lt;h:message for="nomeEjb" styleClass="camposObrigatorios"/&gt;<br />
		
		&lt;h:outputText value="Serviço: " styleClass="fontFields"/&gt;<br />
		&lt;h:selectOneMenu id="cbServico" 
			value="#{configFormatacaoControle.configFormatacao.tbServico}" rendered="true" immediate="true" converter="#{configFormatacaoControle.converter}"&gt;
			&lt;f:selectItems value="#{configFormatacaoControle.listaServicosCombo}" /&gt;
		&lt;/h:selectOneMenu&gt;<br />
	
		&lt;h:outputText value="Path Raiz Linux: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="pathRaizLinux" value="#{configFormatacaoControle.configFormatacao.pathRaizLinux}" title="Path Raiz Linux" size="100" /&gt;<br />

		&lt;h:outputText value="Path Raiz Windows: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="pathRaizWindos" value="#{configFormatacaoControle.configFormatacao.pathRaizWindos}" title="Path Raiz Windows" size="100" /&gt;<br />
		
		&lt;h:outputText value="Diretorio Spool: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="diretorioSpool" value="#{configFormatacaoControle.configFormatacao.diretorioSpool}" title="Diretorio Spool" size="100" required="true" requiredMessage="O Campo Diretorio Spool é obrigatório."/&gt;
		&nbsp;&nbsp;&lt;h:message for="diretorioSpool" styleClass="camposObrigatorios"/&gt;<br />
			
		&lt;h:outputText value="Diretorio Processamento: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="diretorioProcessamento" value="#{configFormatacaoControle.configFormatacao.diretorioProcessamento}" title="Diretorio Processamento" size="100" required="true" requiredMessage="O Campo Diretorio Processamento é obrigatório."&gt;
		&lt;/h:inputText&gt;&nbsp;&nbsp;&lt;h:message for="diretorioProcessamento" styleClass="camposObrigatorios"/&gt;<br />
		
		&lt;h:outputText value="Diretorio Liberados: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="diretorioLiberados" value="#{configFormatacaoControle.configFormatacao.diretorioLiberados}" title="Diretorio Liberados" size="100"&gt;
		&lt;/h:inputText&gt;<br />		
		
		&lt;h:outputText value="Path Armazenamento: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="pathArmazenamento" value="#{configFormatacaoControle.configFormatacao.pathArmazenamento}" title="Path Armazenamento" size="100" /&gt;	<br />
		
		&lt;h:outputText value="Gera Gravação Serviço: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="geraGravacaoServico" value="#{configFormatacaoControle.configFormatacao.geraGravacaoServico}"&gt;  
  					&lt;f:selectItem itemLabel="Sim" itemValue="1" /&gt;  
  					&lt;f:selectItem itemLabel="Não" itemValue="0" /&gt;  
			&lt;/h:selectOneRadio&gt;<br />
			  
		&lt;h:outputText value="Gera SOS Laser: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="geraSosLaser" value="#{configFormatacaoControle.configFormatacao.geraSosLaser}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Grava Mídia: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="gravaMidia" value="#{configFormatacaoControle.configFormatacao.gravaMidia}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Grava Journal: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="gravaJournal" value="#{configFormatacaoControle.configFormatacao.gravaJournal}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Gera Numero Lote: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="geraNumeroLote" value="#{configFormatacaoControle.configFormatacao.geraNumeroLote}"&gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Lote por Núcleo: " styleClass="fontFields"/&gt;
		&lt;h:selectOneRadio id="lotePorNucleo" value="#{configFormatacaoControle.configFormatacao.lotePorNucleo}" &gt;
			&lt;f:selectItem itemLabel="Sim" itemValue="1"/&gt;
			&lt;f:selectItem itemLabel="Não" itemValue="0"/&gt;
		&lt;/h:selectOneRadio&gt;<br />
		
		&lt;h:outputText value="Xml Config Liberados: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputTextarea id="xmlConfigLiberados" value="#{configFormatacaoControle.configFormatacao.xmlConfigLiberados}" cols="75" /&gt;<br />
		
		&lt;h:outputText value="Dr Postagem: " styleClass="fontFields"/&gt;<br />
		&lt;h:inputText id="drPostagem" value="#{configFormatacaoControle.configFormatacao.drPostagem}" title="Dr Postagem" size="20" /&gt;<br />
									
		&lt;h:commandButton action="#{configFormatacaoControle.create}"
			value="Salvar" styleClass="jsfButton" /&gt;
		&lt;h:commandButton type="button" value="Close" styleClass="jsfButton"
			onclick="javascript:Richfaces.hideModalPanel('panelNovo')"/&gt; 
		<br /><br />
	&lt;/h:form&gt;
	&lt;/rich:panel&gt;	
	&lt;/rich:modalPanel&gt;

Valew!![/quote]

Opa… que bom que deu certo cara!

Precisando, estamos ai!

[]'s

Estou com problema semelhante ao seu (página em branco ao submeter no IE, com o erro de javascript, no FF funciona sem problemas).

Vendo os posts e as sugestões, me vi em um beco sem saída, pois utilizo mais de um componente a4j (como o a4j:support e o a4j:region).

Segundo sua resposta, alvimar, você diz que passou para uma versão mais nova do Richfaces que funcionou. Que versão foi essa, pois assim como sua versão anterior, também estou usando a 3.2.2, mas ao passar para a 3.3.3 não deu certo?

Utilizo estes a4j para renderizar um componente após alterar um outro, como no caso abaixo:

(...)
<h:inputText id="textoParaBusca" value="" immediate="true" style="width: 215px;">
         <a4j:support event="onchange" reRender="tabela"/>
</h:inputText>

<a4j:region id="region" immediate="true">
      <rich:dataTable id="tabela" .....
      </rich:dataTable>
</a4j:region>
(...)

Se tiver que eliminar os componentes a4j, o que vocês sugeririam para substituir o a4j:support e o a4j:region para renderizar o dataTable?