Boa tarde galera…
Estou com o seguinte problema, talvez seja até simples, mas estou desde ontem tentando arrumar e ainda não consegui, então toda ajuda é bem vinda…
Seguinte: Eu tenho duas listas na página da venda, uma com itensVenda, e outra com maoDeObra…
A lista itensVenda, remove normalmente e funciona de acordo como eu preciso, porém a lista maoDeObra, após adicionar várias Mão de Obra, quanto tento remover alguma, ela sempre remove o primeiro item da lista…
Gostaria de alguma ajuda pra isso…
maodeobra.xhtml
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://xmlns.jcp.org/jsf/core">
<p:panelGrid columns="2" layout="grid" columnClasses="coluna10, coluna90">
<p:outputLabel value="Mão de Obra:" for="maodeobra"/>
<h:panelGroup>
<p:inputText id="maodeobra" value="#{vendaControle.maoDeObra.descricao}"/>
</h:panelGroup>
<p:outputLabel value="Valor:" for="valor"/>
<p:inputText id="valor"
value="#{vendaControle.maoDeObra.valor}">
<f:convertNumber minFractionDigits="2"
maxFractionDigits="2"/>
</p:inputText>
<p:commandButton value="Adicionar"
icon=" ui-icon-circle-triangle-s"
action="#{vendaControle.addItem2()}"
ajax="false"/>
</p:panelGrid>
<p:dataTable value="#{vendaControle.venda.maoDeObra}"
var="obra"
paginator="true" rows="5"
rowIndexVar="rowIndex"
emptyMessage="Nenhum registro encontrado">
<p:column headerText="Descrição" width="10%" style="text-align:center">
<h:outputText value="#{obra.descricao}"/>
</p:column>
<p:column headerText="Valor" width="10%" style="text-align:center">
<h:outputText value="#{obra.valor}">
<f:convertNumber minFractionDigits="2"
maxFractionDigits="2"
type="currency"
currencySymbol="R$"/>
</h:outputText>
</p:column>
<p:column headerText="Remover" width="20%" style="text-align:center">
<p:commandButton value="Remover"
icon="ui-icon-circle-triangle-n"
action="#{vendaControle.removeItem2(obra)}"
ajax="false"/>
</p:column>
</p:dataTable>
</html>
>> VendaControle.java
package controle;
import converter.ConverterGenerico;
import entidades.ItemVenda;
import entidades.MaoDeObra;
import entidades.Venda;
import facade.VendaFacade;
import java.io.Serializable;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
@Named
@ViewScoped
public class VendaControle implements Serializable {
private Venda venda;
@Inject
private VendaFacade vendaFacade;
private ConverterGenerico converterGenerico;
private ItemVenda itemVenda = new ItemVenda();
private MaoDeObra maoDeObra = new MaoDeObra();
public void addItem() {
try {
venda.addItem(itemVenda);
itemVenda = new ItemVenda();
} catch (Exception ex) {
ex.printStackTrace();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void addItem2() {
try {
venda.addItem2(maoDeObra);
maoDeObra = new MaoDeObra();
} catch (Exception ex) {
ex.printStackTrace();
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_WARN, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
}
public void removeItem(ItemVenda i) {
venda.removeItem(i);
}
public void removeItem2(MaoDeObra m) {
venda.removeItem2(m);
}
public ConverterGenerico converter() {
if (converterGenerico == null) {
converterGenerico = new ConverterGenerico(vendaFacade);
}
return converterGenerico;
}
public void novo() {
venda = new Venda();
itemVenda = new ItemVenda();
maoDeObra = new MaoDeObra();
}
public String salvar() {
try {
venda.validar();
venda.movimenta();
vendaFacade.salvar(venda);
return "list?faces-redirect=true";
} catch (Exception ex) {
FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), "");
FacesContext.getCurrentInstance().addMessage(null, message);
}
return null;
}
public String excluir(Venda v) {
vendaFacade.excluir(v);
return "list?faces-redirect=true";
}
public List<Venda> getListagem() {
return vendaFacade.listar();
}
public Venda getVenda() {
return venda;
}
public void setVenda(Venda venda) {
this.venda = venda;
}
public ItemVenda getItemVenda() {
return itemVenda;
}
public void setItemVenda(ItemVenda itemVenda) {
this.itemVenda = itemVenda;
}
public MaoDeObra getMaoDeObra() {
return maoDeObra;
}
public void setMaoDeObra(MaoDeObra maoDeObra) {
this.maoDeObra = maoDeObra;
}
}