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.
[code]
<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>[/code]
Ação do botão
[code]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();
}[/code]