Problema JSF + PRIMEFACES

Em uma página eu tenho um componente <p:wizard>(que fica dentro de um <h:form>) e dentro de umas das <p:tab> do <p:wizard>
eu coloquei um <p:commandButton>. Eu quero fazer uma validação para so ir para outra página quando o Array de documentos não for vazio.(Até aqui ok).

So que como meu <p:commandButton> e o botão next do <p:wizard> estão no mesmo form quando eu clico no meu <p:commandButton>(botão responsavel por adicionar itens ao Array)
ele já faz a validação, ai no caso o array ainda está vazio.

O que eu quero é que ao cliclar no <p:commandButton> não seja realizado a validação.

Exatamente como todo mundo pensou agora, é so colocar immediate=“true” no <p:commandButton> mas quando eu faço isso os valores dos meus <h:inputText> não são pegos
e desta forma são jogados valores nulos pro Array.

Outra solução seria colocar o <p:commandButton> em outro form so que ai ficaria um form dentro de outro, isso é possível?
de toda forma eu ja tentei e não funcionou.

Então minha duvida é: Como eu posso ter dois botões num mesmo form um(no caso o botão do wizard ) fazer a validação e o outro não.

				&lt;p:tab id="documentoss" title="Itens Furtados"&gt;
						


						&lt;p:panel header="Selecione os Itens Furtados "&gt;
						
								
								&lt;table cellspacing="10px"&gt;

								
								&lt;tr&gt;		
									&lt;td&gt;&lt;h:outputText value="Numero:" /&gt;&lt;/td&gt;
									&lt;td&gt;&lt;h:inputText value="#{documentoMB.ccNumero}" /&gt;&lt;/td&gt;
									&lt;td&gt;&lt;h:outputText value="Bandeira:" /&gt;&lt;/td&gt;
									&lt;td&gt;&lt;h:inputText value="#{documentoMB.ccBandeira}" /&gt;&lt;/td&gt;
								&lt;/tr&gt;
								
									
										
									
									&lt;td&gt;&lt;p:commandButton value="Add" update="documentos msgs @parent"
											action="#{documentoMB.reinit}"  &gt;
									
									&lt;p:collector value="#{documentoMB.documento}"
											addTo="#{documentoMB.documentos}" /&gt;
										&lt;/p:commandButton&gt;&lt;/td&gt;

								&lt;/tr&gt;

						&lt;/table&gt;
						&lt;/p:panel&gt;



						&lt;p:outputPanel id="documentos" &gt;
							&lt;p:dataTable value="#{documentoMB.documentos}" var="documento" &gt;

								&lt;p:column&gt;
									&lt;f:facet name="header"&gt;
										&lt;h:outputText value="Item" /&gt;
									&lt;/f:facet&gt;
									&lt;h:outputText value="#{documento.descricao_material}" /&gt;
								&lt;/p:column&gt;



								&lt;p:column style="text-align: center;"&gt;
									&lt;f:facet name="header"&gt;
										&lt;h:outputText value="Remover" /&gt;
									&lt;/f:facet&gt;
									&lt;p:commandLink  update="form:documentos"
										process="@this" immediate="true"&gt;
										&lt;p:graphicImage url="/images/excluir.gif"/&gt;
										&lt;p:collector value="#{documento}"
											removeFrom="#{documentoMB.documentos}" /&gt;
									&lt;/p:commandLink&gt;
									
								&lt;/p:column&gt;

							&lt;/p:dataTable&gt;
						&lt;/p:outputPanel&gt;
						
					
					
					&lt;/p:tab&gt;

 public String reinit(){
    	if(documentoSelecionado.equals("CC")){
			documento.setDescricao_material("Cartão de Credito | Número:"  +   ccNumero + " | Bandeira:" + ccBandeira);
			setCcNumero(""); 
			setCcBandeira("");
		}
		if(documentoSelecionado.equals("CPF")){
			documento.setDescricao_material("CPF | Número:" + cpfNumero);
			setCpfNumero("");
		}
		documento = new Documento();
		
		return null;
		
	}

Coloquei o Codigo resumido devido ao tamanho.
Agradeço qualquer ajuda.

cara,

coloca o atributo ajax=false e ve se funciona.

t+

Tenta colocar no botão em questão o

    <p:commandButton ... (seus atributos)

                                  process="@this"/>

[quote=alissonvla]cara,

coloca o atributo ajax=false e ve se funciona.

t+[/quote]

no caso para colocar ajax=“false” no <p:commandButton>?
Coloquei e não funcionou.

[quote=bruno.neves]Tenta colocar no botão em questão o

[code]
<p:commandButton … (seus atributos)

                              process="@this"/>

[/code][/quote]

Aconteceu a mesma coisa que colocar o immediate=“true”, os valores dos <h:inputText> vieram como null.

cara,

esqueci de mais uma coisa, tenta assim ajax=“false” immediate=“true”, pois eu tenho um projeto aqui e funciona.

t+

[quote=alissonvla]cara,

esqueci de mais uma coisa, tenta assim ajax=“false” immediate=“true”, pois eu tenho um projeto aqui e funciona.

t+[/quote]

Não funcionou.

No seu projeto, o seu botão com o immediate=“true”, ele pega os valores dos inputText?

Realmente com o immediate=“true”(como ele so pula a parte de validação no ciclo de vida) os valores são pegos normalmente, percebi que meu problema é outro.

&lt;td&gt;&lt;h:selectOneMenu id="selectDocumentos" 
									value="#{documentoMB.documentoSelecionado}" onchange="submit()"
								 immediate="true" &gt;
									&lt;f:selectItem itemValue="CC" itemLabel="Cartão de Credito" /&gt;
									&lt;f:selectItem itemValue="CPF" itemLabel="Cpf" /&gt;
									&lt;f:selectItem itemValue="RG" itemLabel="RG" /&gt;
									&lt;f:selectItem itemValue="Celular" itemLabel="Celular" /&gt;
									&lt;f:selectItem itemValue="Outros" itemLabel="Outros" /&gt;

								&lt;/h:selectOneMenu&gt;&lt;/td&gt;

Eu tenho esse <h:selectOneMenu> que quando muda o valor selecionado ele chama um metodo.
quando eu mudo o valor selecionado ele faz as validações e eu não quero que ele faça
ja coloquei o immediate=“true” so que nesse caso não esta funcionando.

mas pq vc ta colocando onchange=“submit()” ?

Porque de acordo com item escolhido no selectOneMenu são gerados campos diferentes em baixo.

cara,

tirar o onchange e use p:ajax dentro do seu h:selectOneMenu, vai ficar melhor

<p:ajax event="change" update="ID_SER_ATUALIZADO"/>

e ve se resolve seu problema

t+

[quote=alissonvla]cara,

tirar o onchange e use p:ajax dentro do seu h:selectOneMenu, vai ficar melhor

<p:ajax event="change" update="ID_SER_ATUALIZADO"/>

e ve se resolve seu problema

t+[/quote]

Na forma abaixo consigo trocar os campos do selectOneMenu e apertar o commandButton sem serem validados
mas o problema é que os valores dos inputText ficam como null.

<p:panel header="Selecione os Documentos">

							
							<h:inputHidden value="#{documentoMB.documento.descricao_material}" required="true" />  
								
								<h:panelGrid>
									<h:selectOneMenu id="selectDocumentos" 
											value="#{documentoMB.documentoSelecionado}" 
											>
											<f:selectItem itemValue="CC" itemLabel="Cartão de Credito" />
											<f:selectItem itemValue="CPF" itemLabel="Cpf" />
											<f:selectItem itemValue="RG" itemLabel="RG" />
											<f:selectItem itemValue="Celular" itemLabel="Celular" />
											<f:selectItem itemValue="Outros" itemLabel="Outros" />
											 <p:ajax event="change" update="form:teste" /> 


										</h:selectOneMenu>
								</h:panelGrid>
								
								


							<h:panelGrid id="teste" columns="2">
							
								<h:panelGroup rendered="#{documentoMB.cc}">
									
										<h:outputText value="Numero:" />
										
										<h:inputText value="#{documentoMB.ccNumero}" />
									
										<h:outputText value="Bandeira:" />
										
										<h:inputText value="#{documentoMB.ccBandeira}" />
										
									
								</h:panelGroup>

								<h:panelGroup rendered="#{documentoMB.cpf}">
								
										<h:outputText value="Numero:" />
										
										<h:inputText value="#{documentoMB.cpfNumero}" />
										
									
								</h:panelGroup>
							

									<p:commandButton  ajax="false" immediate="true"  value="Add" update="documentos msgs @parent"
										action="#{documentoMB.reinit}">
										<p:collector value="#{documentoMB.documento}"
											addTo="#{documentoMB.documentos}" />
									</p:commandButton>
								
	</h:panelGrid>
							
						</p:panel>

Nessa forma abaixo , os valores dos inputText vem corretamente mas so se não tiver a validação, pq com ela não é possivel apertar o commandButton.


<p:panel header="Selecione os Documentos">

							
							<!-- <h:inputHidden value="#{documentoMB.documento.descricao_material}" required="true" /> -->  
								
								<h:panelGrid>
									<h:selectOneMenu id="selectDocumentos"  onchange="submit()"
											value="#{documentoMB.documentoSelecionado}" 
											>
											<f:selectItem itemValue="CC" itemLabel="Cartão de Credito" />
											<f:selectItem itemValue="CPF" itemLabel="Cpf" />
											<f:selectItem itemValue="RG" itemLabel="RG" />
											<f:selectItem itemValue="Celular" itemLabel="Celular" />
											<f:selectItem itemValue="Outros" itemLabel="Outros" />
											 <!-- <p:ajax event="change" update="form:teste" />  -->


										</h:selectOneMenu>
								</h:panelGrid>
								
								


							<h:panelGrid id="teste" columns="2">
							
								<h:panelGroup rendered="#{documentoMB.cc}">
									
										<h:outputText value="Numero:" />
										
										<h:inputText value="#{documentoMB.ccNumero}" />
									
										<h:outputText value="Bandeira:" />
										
										<h:inputText value="#{documentoMB.ccBandeira}" />
										
									
								</h:panelGroup>

								<h:panelGroup rendered="#{documentoMB.cpf}">
								
										<h:outputText value="Numero:" />
										
										<h:inputText value="#{documentoMB.cpfNumero}" />
										
									
								</h:panelGroup>
							

									<p:commandButton    value="Add" update="documentos msgs @parent"
										action="#{documentoMB.reinit}">
										<p:collector value="#{documentoMB.documento}"
											addTo="#{documentoMB.documentos}" />
									</p:commandButton>
								
	</h:panelGrid>
							
						</p:panel>

cara,

tenta colocar immediate=true em seus inputText.

uma pergunta, Aonde fica seu h:form?

t+

[quote=alissonvla]cara,

tenta colocar immediate=true em seus inputText.

uma pergunta, Aonde fica seu h:form?

t+[/quote]

Valeu por estar ajudando.

Não posso colocar immediate=true nos inputText porque posteriormente eles vão ser validados.
o form fica antes do wizard esse trecho do codido é o 3° <p:tab> do wizard.

Tive esse mesmo problema hoje e resolvi usando assim:

<p:commandButton update="table" icon="ui-icon-closethick" title="Remover" action="#{bean.metodo}" process="@this"> <f:setPropertyActionListener value="#{usp}" target="#{bean.duspSelecionada}" /> </p:commandButton>

Valeu!
Bom dia à todos :wink: