Problemas ao utilizar dois forms em uma view JSF

0 respostas
Diego_Adriano

Bom galera, estou enfrentando um estranho problema ao utilizar dois forms em uma view, acontece o seguinte, eu tenho um form onde tenho:
Form1 > cabeçalho: Num Saida, Seria, Cliente,Data
Form2 > Produtos : Descrição, VltUnit, Qtda, Vlr Total.

Nesse segundo form tenho um botão que pega os dados do produto e add a um datatable, então ele teria que atualizar somente o form do produto, porém ele limpa a página toda e exibe os dados no datatable.
Tentei acessar os dados do cabeçalho na ação do botão e ocorre NullPointerException.
Se eu utilizar somente 1 form o processo ocorre normalmente.

<h:form id="formDados" prependId="false">	
	<h:panelGrid columns="2" columnClasses="colunaEsquerda,colunaDireita">
							
		<h:outputText value="NF: "/>
		<p:inputText size="6"
				 value="#{saidaBean.venda.numSaida}"/>
							
		<h:outputText value="Série: "/>
		<p:inputText size="4"
				 value="#{saidaBean.venda.serie}"/>
							
		<h:outputText value="Cliente: "/>
		<p:autoComplete value="#{saidaBean.clienteSelecionado}"
					completeMethod="#{saidaBean.completecliente}" 
					var="cliente" itemValue="#{cliente}" itemLabel="#{cliente.nome}"
					converter="Converter"
					onkeyup="this.value = this.value.toUpperCase();">
			<p:ajax event="blur" listener="#{saidaBean.buscaSelecionado}" />
		</p:autoComplete>
								
		<h:outputText value="Data: "/>
		<p:calendar size="12"
				pattern="dd/MM/yyyy"
				locale="pt"
				value="#{saidaBean.venda.dataemissao}"/>
	</h:panelGrid>
					
</h:form>
						
<p:tabView>
<!-- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -->
										<!-- PRODUTOS -->
<!-- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -->
	<p:tab title="Produto">
		<h:form id="formProduto">	
			<h:panelGrid columns="2" columnClasses="colunaEsquerda,colunaDireita">
				<h:outputText value="Produto: "/>
				<p:autoComplete value="#{saidaBean.produtoSelecionado}" 
							completeMethod="#{saidaBean.completeproduto}" 
							var="saida" itemValue="#{saida}" itemLabel="#{saida.nome}"				 
							converter="Converter"
							onkeyup="this.value = this.value.toUpperCase();">
					<p:ajax event="blur" listener="#{saidaBean.buscaProduto}" />			
				</p:autoComplete>				
											  			
				<h:outputText value="Qtd: "/>
				<p:inputText size="6"
						 value="#{saidaBean.qtd}">
					<p:ajax event="blur" listener="#{saidaBean.quantidade}"/>		 
				</p:inputText>			 
										
				<h:outputText value="Vlr Unit: "/>
				<p:inputText size="6"
						 value="#{saidaBean.vu}">
					<p:ajax event="blur" update="vti" listener="#{saidaBean.totalitem}"/>		 
				        <f:convertNumber minFractionDigits="2" />
				</p:inputText>
										
				<h:outputText value="Vlr Total: "/>
				<h:outputText size="6"
						 value="#{saidaBean.dadosSaidaProduto.vlrtotalitem}"
					         id="vti">
					<f:convertNumber minFractionDigits="2" />
				</h:outputText>
										
			</h:panelGrid>
			<h:panelGrid>
				<p:column>
					<p:commandButton update="formProduto,tblProduto" icon="ui-icon-plus"
								action="#{saidaBean.adicionaproduto}" ajax="false"/>
				</p:column>
			</h:panelGrid>
							    
			<p:dataTable value="#{saidaBean.saidasProduto}"
					var="produto"
			                rows="5"
					id="tblProduto">
										
				<f:facet name="header">Produtos</f:facet>
			        <p:column headerText="ID">
				        <h:outputText value="#{produto.produto.id}"/>
				</p:column>
				<p:column headerText="PRODUTO">
				        <h:outputText value="#{produto.produto.nome}"/>
				</p:column>
				<p:column headerText="QTD">
					<h:outputText value="#{produto.quantidade}"/>
				</p:column>
				<p:column headerText="VLR UNIT" style="align:rigth">
					<h:outputText value="#{produto.vlrunit}">
					      <f:convertNumber currencySymbol="R$" type="currency" />
				        </h:outputText>	
				</p:column>
				<p:column headerText="VLR TOTAL" style="align:rigth">
					<h:outputText value="#{produto.vlrtotalitem}">
						<f:convertNumber currencySymbol="R$" type="currency" />
					</h:outputText>	
					<f:facet name="footer">
						<h:outputText value="#{saidaBean.venda.vlrtotal}">
							<f:convertNumber currencySymbol="R$" type="currency" />
						</h:outputText>	
					</f:facet>	
				</p:column>
										
			</p:dataTable>
		</h:form>	
	</p:tab>
Ação do botão
public void adicionaproduto(){
	
	
      this.venda.setVlrtotal(dadosSaidaProduto.getVlrtotalitem() + venda.getVlrtotal());
		
      DadosSaida dsProd = new DadosSaida(dadosSaidaProduto.getQuantidade(), dadosSaidaProduto.getVlrunit(),
				dadosSaidaProduto.getVlrtotalitem(), dadosSaidaProduto.getProduto());
		
	dsProd.setSaida(venda);
	getSaidasProduto().add(dsProd);
	venda.setDadosSaida(saidasProduto);
		
	dadosSaidaProduto = new DadosSaida();
	  		  qtd = new Integer(0);
				 vu = new Double(0.00);
	produtoSelecionado = new Produto();
}
Criado 20 de julho de 2012
Respostas 0
Participantes 1