JSF 2 - Problemas com Ajax e campos Required

2 respostas
B

Olás,

Tenho um autocomplete, que uma vez que um item dele é selecionado, o usuário deve clicar no botão btn_selecionar_fiscal_envolvido para atualizar um panel com vários campos. Ocorre que ao clicar no botão e atualizar o panel, um campo (select_grau_envolvimento_fiscal) que está fora do panel e está como required=“true” é validado. Preciso ter este campo como required, porém preciso do ajax nesta tela também… Tenho mudar o escopo do MB para @ViewScoped, mas ocorre o mesmo problema. Segue código:

<p:dialog header="Cadastro de Fiscal"
		widgetVar="dlg_cadastrar_fiscal_envolvido" modal="true"
		resizable="false">		

		<h:form id="frm_cadastro_fiscal_envolvido" prependId="false">
			
			<p:fieldset legend="Filtro">
				<h:panelGrid columns="2" cellpadding="2">
					<h:outputText value="Digite o nome do Fiscal para pesquisa:" />
					<h:outputText />
					
					<p:autoComplete id="auto_complete_fiscal_envolvido"
						value="#{fiscalEnvolvidoBean.fiscalSelecionado}"
						completeMethod="#{fiscalEnvolvidoBean.completaNomeFiscal}"
						minQueryLength="2" queryDelay="400" forceSelection="true"
						var="fiscal" itemLabel="#{fiscal.pessoaFisica.pessoa.nome}"
						itemValue="#{fiscal}" size="72"
						title="#{msg.aie_tooltip_autocomplete_municipio}"
						converter="fiscalConverter" />
					
					<p:commandButton id="btn_selecionar_fiscal_envolvido" value="Selecionar" update="panel_fiscal_envolvido" />		
				</h:panelGrid>					
			</p:fieldset>				 	
							
			<br />				
			
			<p:fieldset legend="Fiscal Envolvido">							
				<h:panelGrid id="panel_fiscal_envolvido" columns="8" cellpadding="2">						
					<h:outputText value="Nome:" />
					<p:inputText id="input_nome_fiscal" value="#{fiscalEnvolvidoBean.fiscalSelecionado.pessoaFisica.pessoa.nome}" disabled="true" style="width: 220px;" />		
					 
					<h:outputText value="Matrícula:" />
					<p:inputText id="input_matricula_fiscal" value="#{fiscalEnvolvidoBean.fiscalSelecionado.matricula}" disabled="true" style="width: 90px;" />
										
					<h:outputText value="CPF:" />
					<p:inputText id="input_cpf_fiscal" value="#{fiscalEnvolvidoBean.fiscalSelecionado.pessoaFisica.cpf}" disabled="true" style="width: 90px;" />
										 
					<h:outputText value="Nº Portaria Designação:" />
					<p:inputText id="input_portaria_fiscal" value="#{fiscalEnvolvidoBean.fiscalSelecionado.sequenciaPortaria}" disabled="true" style="width: 90px;" />				
				</h:panelGrid> 		

				<h:panelGrid columns="2" cellpadding="2">
					<h:outputText value="Grau de Envolvimento: *" />
					<p:selectOneMenu id="select_grau_envolvimento_fiscal" value="#{fiscalEnvolvidoBean.grauEnvolvimentoSelecionado}" 
						required="true" requiredMessage="Grau de Envolvimento: #{msg.aie_campo_obrigatorio}" converter="grauEnvolvimentoConverter" style="width:286px;">
						<f:selectItem itemLabel="#{msg.aie_opcao_combo_selecione}" itemValue="" />
						<f:selectItems value="#{fiscalEnvolvidoBean.grauEnvolvimentoSelect}" />
					</p:selectOneMenu>
				</h:panelGrid>
	
				<h:panelGrid columns="1" cellpadding="2">
					<h:outputText value="Observação:" />
					<p:inputTextarea id="input_textarea_observacao_fiscal_envolvido" value="#{fiscalEnvolvidoBean.envolvido.descricao}" style="width:850px;height:68px;" effectDuration="400" />
				</h:panelGrid>					
			</p:fieldset>
			
			<br />

			<div align="center">    	 	
				<p:commandButton id="btn_salvar_fiscal_envolvido" type="submit" action="#{fiscalEnvolvidoBean.salvar}" update=":tab_view_acao_fiscalizatoria:frm_lista_efetivo_acao_fiscalizatoria" oncomplete="dlg_cadastrar_fiscal_envolvido.hide();" value="Salvar" />
							
				<p:commandButton id="btn_limpar_fiscal_envolvido" type="reset" value="Limpar"> 
					<p:ajax update="frm_cadastro_fiscal_envolvido" />
				</p:commandButton>
			</div>
		</h:form>
	</p:dialog>

2 Respostas

B

Será que a solução será validar no MB mesmo, antes de salvar?

bruno_7317

Sete o atributo “immediate” do commandButton para “true”.

Criado 12 de março de 2012
Ultima resposta 20 de jul. de 2012
Respostas 2
Participantes 2