olá galera seguinte tenho um dataTable com row edit… esta funcionando certo só q toda vez q eu atualizo algum campo com row edit ele não atualiza o campo valor total…
<h1>
Total:
<h:outputLabel
value="#{ordemDeServicoBean.ordemDeServico.valorTotal}" id="total" />
</h1>[/code]
o que posso fazer?
aki esta meu codigo inteiro
[code]<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Editar Ordem de Serviço</title>
</h:head>
<h:body>
<h:form id="form" enctype="multipart/form-data" update=":form:total, itensList">
<div align="center">
<p:panel header="Solicitação De Ordem De Serviço" style="width:1050px">
<ui:include src="/paginas/Menu.xhtml" />
<h:inputHidden value="#{ordemDeServicoBean.ordemDeServico.idOrdemDeServico}" />
<p:panel>
<h:panelGrid columns="2" cellpadding="2">
<h:outputLabel value="Data Abertura" />
<p:calendar
value="#{ordemDeServicoBean.ordemDeServico.dataAbertura}"
pattern="dd/MM/yyyy" required="true" />
</h:panelGrid>
<h:panelGrid columns="4" cellpadding="2">
<h:outputLabel value="Cliente " />
<p:inputText value="#{ordemDeServicoBean.pessoa.nome}" />
<p:commandButton type="button" value="Pesquisar"
onclick="dlg.show()" />
<p:dialog header="Pesquisar Cliente" widgetVar="dlg"
resizable="false" width="1000" height="300" hideEffect="explode" showEffect="explode" modal="true">
<p:dataTable var="pessoa" value="#{pessoaBean.listPessoa}"
widgetVar="pessoaTable"
emptyMessage="Nenhum pessoa Encontrado Nessas Condições" rowStyleClass="#{empty rowIx or rowIx
mod 2 ne 0 ? 'even-row' : 'odd-row'}"
rowIndexVar="rowIx">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Procurar em todos os campos:" />
<p:inputText id="globalFilter" onkeyup="pessoaTable.filter()"
style="width:150px" />
</p:outputPanel>
</f:facet>
<p:column filterBy="#{pessoa.idPessoa}" headerText="Id"
footerText="Id" filterMatchMode="contains">
<h:outputText value="#{pessoa.idPessoa}" />
</p:column>
<p:column filterBy="#{pessoa.nome}" headerText="Nome"
footerText="Nome" filterMatchMode="contains">
<h:outputText value="#{pessoa.nome}" />
</p:column>
<p:column filterBy="#{pessoa.fone}" headerText="Fone"
footerText="Fone" filterMatchMode="contains">
<h:outputText value="#{pessoa.fone}" />
</p:column>
<p:column filterBy="#{pessoa.celular}" headerText="Celular"
footerText="Celular" filterMatchMode="contains">
<h:outputText value="#{pessoa.celular}" />
</p:column>
<p:column filterBy="#{pessoa.tipo}" headerText="Tipo"
footerText="Tipo" filterMatchMode="contains">
<h:outputText value="#{pessoa.tipo}" />
</p:column>
<p:column style="width:100px">
<h:panelGrid columns="4" styleClass="actions" cellpadding="4">
<h:commandButton title="Selecionar "
image="/imagens/icones/ok.gif"
action="#{ordemDeServicoBean.selecionarPessoa}">
<f:setPropertyActionListener value="#{pessoa.idPessoa}"
target="#{ordemDeServicoBean.pessoa.idPessoa}" />
</h:commandButton>
</h:panelGrid>
</p:column>
</p:dataTable>
</p:dialog>
<h:outputLabel value="Técnico " />
<p:inputText value="#{ordemDeServicoBean.funcionario.nome}" />
<p:commandButton type="button" value="Pesquisar"
onclick="dlg1.show()" />
<p:dialog header="Pesquisar Técnico" widgetVar="dlg1"
resizable="false" width="1000" height="300" hideEffect="explode" showEffect="explode" modal="true">
<p:dataTable var="funcionario"
value="#{funcionarioBean.listFuncionario}"
widgetVar="funcionarioTable"
emptyMessage="Nenhum funcionario Encontrado Nessas Condições" rowStyleClass="#{empty rowIx or rowIx
mod 2 ne 0 ? 'even-row' : 'odd-row'}"
rowIndexVar="rowIx">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Procurar em todos os campos:" />
<p:inputText id="globalFilter"
onkeyup="funcionarioTable.filter()" style="width:150px" />
</p:outputPanel>
</f:facet>
<p:column filterBy="#{funcionario.idFuncionario}"
headerText="Id" footerText="Id" filterMatchMode="contains">
<h:outputText value="#{funcionario.idFuncionario}" />
</p:column>
<p:column filterBy="#{funcionario.nome}" headerText="Nome"
footerText="Nome" filterMatchMode="contains">
<h:outputText value="#{funcionario.nome}" />
</p:column>
<p:column filterBy="#{funcionario.cpf}" headerText="Cpf"
footerText="Cpf" filterMatchMode="contains">
<h:outputText value="#{funcionario.cpf}" />
</p:column>
<p:column filterBy="#{funcionario.celular}" headerText="Celular"
footerText="Celuar" filterMatchMode="contains">
<h:outputText value="#{funcionario.celular}" />
</p:column>
<p:column filterBy="#{funcionario.login}" headerText="Login"
footerText="Login" filterMatchMode="contains">
<h:outputText value="#{funcionario.login}" />
</p:column>
<p:column style="width:100px">
<h:panelGrid columns="3" styleClass="actions" cellpadding="3">
<h:commandButton title="Selecionar "
image="/imagens/icones/ok.gif"
action="#{ordemDeServicoBean.selecionarFuncionario}">
<f:setPropertyActionListener
value="#{funcionario.idFuncionario}"
target="#{ordemDeServicoBean.funcionario.idFuncionario}" />
</h:commandButton>
</h:panelGrid>
</p:column>
</p:dataTable>
</p:dialog>
</h:panelGrid>
<h:panelGrid columns="5" cellpadding="2">
<h:outputLabel value="Serviços / Produtos" />
<p:inputText value="#{ordemDeServicoBean.tipoDeServico.descricao}" />
<p:commandButton type="button" value="Pesquisar"
onclick="dlg2.show()" />
<p:dialog header="Pesquisar Serviço / Produtos" widgetVar="dlg2"
resizable="false" width="1000" height="300" hideEffect="explode" showEffect="explode" modal="true">
<p:dataTable var="tipoDeServico"
value="#{ordemDeServicoBean.listTipoDeServico}"
widgetVar="tipoDeServicoTable"
emptyMessage="Nenhum Servico Encontrado Nessas Condições" rowStyleClass="#{tipoDeServico.tipo == 'Produto' ? 'produto' : null} #{tipoDeServico.tipo == 'Servico' ? 'servico' : null} "
rowIndexVar="rowIx">
<f:facet name="header">
<p:outputPanel>
<h:outputText value="Procurar em todos os campos:" />
<p:inputText id="globalFilter"
onkeyup="tipoDeServicoTable.filter()" style="width:150px" />
</p:outputPanel>
</f:facet>
<p:column filterBy="#{tipoDeServico.idTipoDeServico}"
headerText="Id" footerText="Id" filterMatchMode="contains">
<h:outputText value="#{tipoDeServico.idTipoDeServico}" />
</p:column>
<p:column filterBy="#{tipoDeServico.descricao}"
headerText="Descrição" footerText="Descrição"
filterMatchMode="contains">
<h:outputText value="#{tipoDeServico.descricao}" />
</p:column>
<p:column filterBy="#{tipoDeServico.tipo}"
headerText="Tipo" footerText="Tipo"
filterMatchMode="contains">
<h:outputText value="#{tipoDeServico.tipo}" />
</p:column>
<p:column filterBy="#{tipoDeServico.valor}" headerText="Valor"
footerText="Valor" filterMatchMode="contains">
<h:outputText value="#{tipoDeServico.valor}" />
</p:column>
<p:column style="width:100px">
<h:panelGrid columns="1" styleClass="actions" cellpadding="2">
<h:commandButton title="Selecionar "
image="/imagens/icones/ok.gif"
action="#{ordemDeServicoBean.selecionarTiposDeServico}">
<f:setPropertyActionListener
value="#{tipoDeServico.idTipoDeServico}"
target="#{ordemDeServicoBean.tipoDeServico.idTipoDeServico}" />
</h:commandButton>
</h:panelGrid>
</p:column>
</p:dataTable>
</p:dialog>
<p:commandButton value="Adicionar"
action="#{ordemDeServicoBean.adicionarServico}" ajax="false" />
</h:panelGrid>
</p:panel>
<p:growl id="messages1" showDetail="true" />
<p:dataTable var="itensDeServico"
value="#{ordemDeServicoBean.listTiposDeServico}" id="itensList"
rowEditListener="#{ordemDeServicoBean.update}" style="width:1017px" update="itensList, total">
<f:facet name="header">
Serviços Prestados / Produtos
</f:facet>
<p:column headerText="Descrição" style="width:125px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{itensDeServico.tipoDeServico.descricao}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{itensDeServico.tipoDeServico.descricao}"
style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Tipo" style="width:125px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{itensDeServico.tipoDeServico.tipo}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{itensDeServico.tipoDeServico.tipo}"
style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Quantidade" style="width:125px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{itensDeServico.quantidade}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{itensDeServico.quantidade}"
style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Subtotal" style="width:125px">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{itensDeServico.subtotal}" />
</f:facet>
<f:facet name="input">
<p:inputText value="#{itensDeServico.subtotal}"
style="width:100%" />
</f:facet>
</p:cellEditor>
</p:column>
<p:column headerText="Opções" style="width:50px">
<p:rowEditor />
</p:column>
</p:dataTable>
<p:commandButton value="Atualizar"
action="#{ordemDeServicoBean.update}" ajax="false"/>
<h1>
Total:
<h:outputLabel
value="#{ordemDeServicoBean.ordemDeServico.valorTotal}" id="total" />
</h1>
</p:panel>
</div>
<style type="text/css">
h1 {
color: red;
}
.ui-datatable .ui-datatable-data .even-row td {
background-color: #fcefa1;
border-right: solid 0px #4e6769;
}
.ui-datatable .ui-datatable-data .odd-row td {
background-color: #f7f7f7;
border-right: solid 0px #4e6769;
}
.ui-datatable .ui-datatable-data .servico td {
background-color: #FFFF00;
border-right: solid 0px #4e6769;
}
.ui-datatable .ui-datatable-data .produto td {
background-color: #00FF00;
border-right: solid 0px #4e6769;
}
</style>
</h:form>
</h:body>
</html>