P:tabView + p:message

4 respostas
J

Olá pessoal,

Fiz um formulário único e para cada campo coloquei um <p:message> que mostra uma mensagem em momentos de validação do campo após o clique do botão gravar.
Porém decidi dividir esse formulário em abas dentro de um p:tabView, porém agora as mensagens de validação que anteriormente funcionavam agora não funcionam mais.

Essa é a configuração de uma das abas do tabView, as demais seguem o mesmo padrão.

Alguém saberia me dizer o que pode estar acontecendo?
Eu tentei colocar form para cada aba, mas não tive nenhum resultado.

<p:tabView > 
						<p:tab title="#{msg['configuracaoGlobal.configGerais']}">
							<p:panel>
								<table class="dadosBackground">
									<tr>
										<th><h:outputLabel value="#{msg['configuracaoGlobal.contextPathAplicacao']}"/></th>
										<th><h:outputLabel value="#{msg['configuracaoGlobal.pathUploadArquivo']}"/></th>
										<th><h:outputLabel value="#{msg['configuracaoGlobal.auditarSistema']}"/></th>
									</tr>
									<tr>
										<td>
											<h:inputText
												id="urlContextPath"
												value="#{configuracaoGlobalController.model.urlContextPath}"
												size="80" 
												maxlength="60"
												tabindex="1" >
											
												<p:ajax event="blur" update="msgUrlContextPath"/>
											</h:inputText>
											<p:message id="msgUrlContextPath" for="urlContextPath" showDetail="true"/>
										</td>
										<td>
											<h:inputText
												id="pathUploadArquivo"
												value="#{configuracaoGlobalController.model.pathUploadArquivos}"
												size="80" 
												maxlength="60"
												tabindex="2" >
											
												<p:ajax event="blur" update="msgPathUploadArquivo"/>
											</h:inputText>
											<p:message id="msgPathUploadArquivo" for="pathUploadArquivo" showDetail="true"/>
										</td>
										<td>
											<h:selectOneMenu
												id="auditoriaSistema"
				   								value="#{configuracaoGlobalController.model.auditarOperacoes}"
												immediate="true"
												tabindex="3"
												style="width: 150px" >
																
												<f:selectItems value="#{configuracaoGlobalController.selectItemSimNao}" />
												<p:ajax event="change" update="msgAuditoriaSistema"/>
											</h:selectOneMenu>
											<p:message id="msgAuditoriaSistema" for="auditoriaSistema" showDetail="true"/>
										</td>
									</tr>
								</table>
								
								<table class="dadosBackground">
									<tr>
										<th><h:outputLabel value="#{msg['configuracaoGlobal.tipoAutenticacao']}"/></th>
										<th><h:outputLabel value="#{msg['configuracaoGlobal.qtdeTentativaLogin']}"/></th>
										<th><h:outputLabel value="#{msg['configuracaoGlobal.senhaDefaultImportacao']}"/></th>
									</tr>
									<tr>
										<td>
											<h:selectOneMenu
												id="tipoAutenticacao"
				   								value="#{configuracaoGlobalController.model.tipoAutenticacaoEnum}"
												immediate="true"
												tabindex="4"
												style="width: 220px" >
																
												<f:selectItems value="#{configuracaoGlobalController.selectItemTipoAutenticacao}" />
												<p:ajax event="change" update="msgTipoAutenticacao"/>
											</h:selectOneMenu>
											<p:message id="msgTipoAutenticacao" for="tipoAutenticacao" showDetail="true"/>
										</td>
										<td>
											<h:inputText
												id="qtdeTentativaLogin"
												value="#{configuracaoGlobalController.model.qtdeTentativaLogin}"
												size="20" 
												maxlength="3"
												tabindex="5"  
												onkeypress="mascara_0007(this,mascaraNumero_0014)">
												
												<p:ajax event="blur" update="msgQtdeTentativaLogin"/>
											</h:inputText>
											<p:message id="msgQtdeTentativaLogin" for="qtdeTentativaLogin" showDetail="true"/>
										</td>
										<td>
											<h:inputText
												id="senhaDefault"
												value="#{configuracaoGlobalController.model.senhaDefault}"
												size="30" 
												maxlength="16"
												tabindex="6" >
											
												<p:ajax event="blur" update="msgSenhaDefault"/>
											</h:inputText>
											<p:message id="msgSenhaDefault" for="senhaDefault" showDetail="true"/>
										</td>
									</tr>
									<tr>
										<td colspan="3">
											<p:panel styleClass="prime-no-border">
												<h:panelGroup styleClass="btpeq">
													<p:commandLink 
														value="#{msg['gravar']}"
														tabindex="" 
														action="#{configuracaoGlobalController.gravar}"
														update="formulario"
														onstart="statusDialog.show();" 
														onsuccess="statusDialog.hide();" />
												</h:panelGroup>
											</p:panel>
										</td>
									</tr>
								</table>						
							</p:panel>
						</p:tab>

</p:tabView>

4 Respostas

J

Pessoal tentei utilizar h:message mas não tive resultados.
Alguém consegue me dar uma luz?

Obrigado

J

Pessoal, verifiquei um pouco da estrutura da página criada e ela está da seguinte maneira,

<f:view>
			<h:form styleClass="cadastro" id="formulario" style="min-height:0px; vertical-align: top;" prependId="false">
				<p:growl id="messagens" showDetail="false" globalOnly="true" />				
				<h:inputHidden id="onLoad" value="#{configuracaoGlobalController.onload}" />
				
				<p:panel styleClass="tabela-form" style="border:0px;">
					<div class="linhaSecaoDados"/>
					<div class="secaoDados"><h:outputLabel value="&#160;#{msg['menu.cadastro']} / #{msg['menu.configuracaoGlobal']}" /></div>
					
					<div class="blankLine"></div> 
				
					<p:tabView > 
						<p:tab>
							<p:panel >
                                                              
                                                          //Aqui ficam os campos com p:message e o botão para gravar                             
                                      
                                                         </p:panel >
                                                <p:tab>
                                        </p:tabView>
                                 </p:panel>
	    	       </h:form>
</f:view>

Fiquei na dúvida se está correto utilizar esse p:panel englobando o tabView e dentro do tabView existir outro p:panel será que pode gerar algum conflito?
Também tentei testar a tag update que fica no botão gravar para que além de referenciar o id do formulario, referenciar o id do p:message, então fiz da seguinte maneira,

update = "formulario, msgUrlContextPath"

Estaria correto fazer isso?

Obrigado.

J

Pessoal,
no lugar de p:message eu coloquei p:messages como teste e de fato apareceu a mensagem de validação solicitando preenchimento do campo, porém ele não é ideal pois também aparecem as mensagens de sucesso que apareceriam no growl.

Será que seria um bug então? Já tentei várias coisas e não consegui.

Obrigado.

net_jones

Johnata

como tá o bean que você adiciona a msg?

eu estava com esse problema aqui…
mas o meu erro foi que tava considerando a hierarquia erradamente.

minha estrututra eh a seguinte

<h:form id=form>

<p:tabView id=tabView>

<p:tab id=tab1>

<p:message for=txtSenha>

Entao no metodo de addMessage vc tem que passar o componente da mensagem da seguinte forma

“form:tabView:txtSenha”

antes eu passava apenas form:txtSenha e assim nao exibia a mensagem…

Espero ter ajudado.
abraço

Criado 14 de novembro de 2011
Ultima resposta 28 de mar. de 2012
Respostas 4
Participantes 2