Tenho uma tela onde preciso fazer rateio de valores, tenho 3 campos, estabelecimento, classificação e porcentagem
Apos informar os 3 campos, teria que adicionar os itens ao meu datatable, porém o que acaba acontecendo é que quando é feito o processo para armazenar nas minhas variveis, ele simplesmente zera ela
meu xhtml:
<p:panel id="pnl_estb" header="Adicionar Estabelecimento(s)" closable="false" toggleSpeed="500" closeSpeed="2000" widgetVar="panelEstabs" >
<h:panelGrid columns="2" id="grid">
<h:outputLabel id="llestab" value="Estabelecimento:"/>
<p:selectOneMenu id="sOMestab" value="#{gravaAbreChamadosMarketing.campoMoveis.idEstabelecimento}" height="100" required="true">
<f:selectItem itemLabel="Selecionar um Estabelecimento" itemValue="0" />
<f:selectItems id="fsestab" value="#{gravaAbreChamadosMarketing.listaEstabelecimentos()}"
var="item" itemLabel="#{item.descricao}"
itemValue="#{item.id}" />
</p:selectOneMenu>
<h:outputLabel id="lclassificacao" value="Classificação:"/>
<p:selectOneMenu id="sOclassificacao" value="#{gravaAbreChamadosMarketing.campoMoveis.classificacao}" height="100" required="true">
<f:selectItem itemLabel="Selecionar uma Classificação" itemValue="0" />
<f:selectItem itemLabel="Comercial/Operacional" itemValue="1" />
<f:selectItem itemLabel="Custo" itemValue="2" />
<f:selectItem itemLabel="Custo Ajudante Distribuição" itemValue="3" />
<f:selectItem itemLabel="Custo Armazenagem" itemValue="4" />
<f:selectItem itemLabel="Custo Equipamentos" itemValue="5" />
<f:selectItem itemLabel="Custo Motorista Distribuição" itemValue="6" />
<f:selectItem itemLabel="Despesa" itemValue="7" />
</p:selectOneMenu>
<h:outputLabel value="Percentual:"/>
<p:inputText id="iporcentagem" required="true"
value="#{gravaAbreChamadosMarketing.campoMoveis.porcentagem}"/>
<p:commandButton id="btn_add" value="Adicionar" update="pestabs @parent dtestabs"
action="#{gravaAbreChamadosMarketing.addEstabs()}" >
<p:collector value="#{gravaAbreChamadosMarketing.campoMoveis}"
addTo="#{gravaAbreChamadosMarketing.camposMoveis}" />
</p:commandButton>
</h:panelGrid>
<p:outputPanel id="pestabs">
<p:dataTable id="dtestabs" value="#{gravaAbreChamadosMarketing.camposMoveis}" var="est" emptyMessage="Nenhum Registro">
<p:column>
<f:facet name="header">
<h:outputText value="Estabelecimento" />
</f:facet>
<h:outputText value="#{est.nomeEstabelecimento}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Classificação" />
</f:facet>
<h:outputText value="#{est.descricaoClassificacao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Percentual" />
</f:facet>
<h:outputText value="#{est.porcentagem}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<p:commandLink value="Excluir" update=":form:pestabs" process=":form:pestabs">
<p:collector value="#{est}"
removeFrom="#{gravaAbreChamadosMarketing.camposMoveis}" />
</p:commandLink>
</p:column>
</p:dataTable>
</p:outputPanel>
</p:panel>
Meu bean:
private CamposChamadosAlocacao campoMoveis;
private ArrayList<CamposChamadosAlocacao> camposMoveis = new ArrayList<CamposChamadosAlocacao>();
public CamposChamadosAlocacao getCampoMoveis() {
return campoMoveis;
}
public void setCampoMoveis(CamposChamadosAlocacao campoMoveis) {
this.campoMoveis = campoMoveis;
}
public ArrayList<CamposChamadosAlocacao> getCamposMoveis() {
return camposMoveis;
}
public void setCamposMoveis(ArrayList<CamposChamadosAlocacao> camposMoveis) {
this.camposMoveis = camposMoveis;
}
public gravaAbreChamadosMarketing() {
//Creator
upLoadChamado = new CamposUploadChamado();
campoMoveis = new CamposChamadosAlocacao();
}
public String addEstabs() {
int ii = 0;
float nPerc = 0;
for (int i = 0; camposMoveis.size() > i; i++) {
ii++;
nPerc = nPerc + camposMoveis.get(i).getPorcentagem();
}
if (campoMoveis.getIdEstabelecimento() == 0 || campoMoveis.getClassificacao() == 0 || campoMoveis.getPorcentagem() == 0) {
camposMoveis.remove(ii - 1);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Necessário o preenchimento de todos os campos", ""));
return "chamados";
} else {
if (nPerc > 100) {
camposMoveis.remove(ii - 1);
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN, "Não é possível adicionar mais estabelecimentos. Percentual igual a 100%", ""));
return "chamados";
}
try {
rs = Conexao.Consulta("select descricao || ' - ' || numero as nome from geral_estabelecimentos where cod_ctrl = " + campoMoveis.getIdEstabelecimento().toString());
while (rs.next()) {
campoMoveis.setNomeEstabelecimento(rs.getString("nome"));
}
switch (campoMoveis.getClassificacao()) {
case 1:
campoMoveis.setDescricaoClassificacao("Comercial/Operacional");
break;
case 2:
campoMoveis.setDescricaoClassificacao("Custo");
break;
case 3:
campoMoveis.setDescricaoClassificacao("Custo Ajudante Distribuição");
break;
case 4:
campoMoveis.setDescricaoClassificacao("Custo Armazenagem");
break;
case 5:
campoMoveis.setDescricaoClassificacao("Custo Equipamento");
break;
case 6:
campoMoveis.setDescricaoClassificacao("Custo Motorista Distribuição");
break;
case 7:
campoMoveis.setDescricaoClassificacao("Despesa");
break;
}
campoMoveisFixo = campoMoveis;
campoMoveis = new CamposChamadosAlocacao();
return "chamados";
} catch (SQLException ex) {
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro ao adicionar Estabelecimentos", ex.getMessage()));
}
}
return "chamados";
}
Quando chega no meu creator simplesmente o meu CAMPOSMOVEIS está null pois eu inicio ele na declaração, tentei já iniciar ele de varias formas, mas sempre recarrega a tela com a variavel null
Alguem sabe alguma dica?