Está acontecendo o seguinte, tenho um dataTable com dados e botões EDITAR, REMOVER e CADASTRAR.
Quando clico no botão cadastrar um Dialog é aberto com dois InputText(Complexidade e Frequencia) e um botão que chama o metodo para fazer o cadastro.
No botão editar acontece o mesmo, mas em vez de cadastrar ele atualiza os dados.
O problema, é que após iniciar o servidor e tentar cadastrar preenchendo os campos, a Frequencia(Integer) vai como 0 e Complexidade(String) vai vazia.
Agora se eu tentar Editar os campos, da tudo certo, os valores são alterados numa boa.
O mais estranho é que se Editar e depois tentar cadastrar, o cadastro acontece, mas com os valores que foram digitados no Dialog Editar.
JSF
<h:form prependId="false" id="formComplexidades">
<h:panelGrid columns="1" styleClass="tabelaConfigTabelas">
<h:panelGrid columns="3">
<h:outputText value="Complexidades" />
</h:panelGrid>
<p:dataTable id="tabelaComplex" value="#{complexidadesBean.complexidades}" var="complexVar"
paginator="true" rows="5" selectionMode="single"
paginatorTemplate=" {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}">
<f:facet name="header">
<p:commandButton value="Cadastrar" update="painelCadastrarComplex" oncomplete="janelaCadastrarComplex.show()"/>
</f:facet>
<p:column>
<f:facet name="header">
<h:outputText value="Complexidade" />
</f:facet>
<div align="center">
<h:outputText value="#{complexVar.complexidade}" />
</div>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Frequencia" />
</f:facet>
<div align="center">
<h:outputText value="#{complexVar.frequencia}" />
</div>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Editar" />
</f:facet>
<p:commandLink value="Editar"
update="painelEditarComplex" oncomplete="janelaEditarComplex.show()">
<f:setPropertyActionListener value="#{complexVar}" target="#{complexidadesBean.complexidadeSelecionada}" />
</p:commandLink>
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Remover" />
</f:facet>
<p:commandLink value="Remover" oncomplete="removeComplexConfirm.show()" >
<f:setPropertyActionListener value="#{complexVar}" target="#{complexidadesBean.complexidadeSelecionada}" />
</p:commandLink>
</p:column>
</p:dataTable>
<p:dialog header="Cadastrar" widgetVar="janelaCadastrarComplex"
resizable="false" width="230" showEffect="explode"
hideEffect="explode">
<p:outputPanel id="painelCadastrarComplex">
<h:panelGrid columns="1" cellpadding="4">
<h:outputLabel value="Complexidade: " /><h:inputText value="#{complexidadesBean.complexidadeSelecionada.complexidade}" />
<h:outputLabel value="Frequência: " /><h:inputText value="#{complexidadesBean.complexidadeSelecionada.frequencia}" />
<p:commandButton update=":formComplexidades:tabelaComplex" value="Cadastrar"
action="#{complexidadesBean.cadastraComplexidade}" />
</h:panelGrid>
</p:outputPanel>
</p:dialog>
<p:dialog header="Editar" widgetVar="janelaEditarComplex"
resizable="false" width="250" showEffect="explode"
hideEffect="explode" position="dynamic" >
<p:outputPanel id="painelEditarComplex">
<h:panelGrid columns="2" cellpadding="4">
<h:inputText value="#{complexidadesBean.complexidadeSelecionada.complexidade}" />
<h:inputText value="#{complexidadesBean.complexidadeSelecionada.frequencia}" />
<p:commandButton value="Atualizar" action="#{complexidadesBean.atualizarComplexidade}"
update=":formComplexidades:tabelaComplex"/>
</h:panelGrid>
</p:outputPanel>
</p:dialog>
<p:confirmDialog message="Deseja remover a Complexidade selecionada?"
showEffect="bounce" hideEffect="explode"
header="Remover area" severity="alert"
widgetVar="removeComplexConfirm">
<p:commandButton value="Sim" update=":formComplexidades:tabelaComplex"
oncomplete="removeComplexConfirm.hide()"
action="#{complexidadesBean.removeComplexidade}" />
<p:commandButton value="Não" onclick="removeAreaConfirm.hide()"
type="button" />
</p:confirmDialog>
</h:panelGrid>
</h:form>
BEAN
public class ComplexidadesBean {
private Complexidades complexidadeSelecionada;
private List<Complexidades> complexidades = new ArrayList<Complexidades>();
public ComplexidadesBean(){
this.complexidadeSelecionada = new Complexidades();
//System.out.println(" criar " +complexidadeSelecionada.getId() + " " + complexidadeSelecionada.getComplexidade() + " " + complexidadeSelecionada.getFrequencia());
}
public EntityManager entityManager(){
ELContext elContext = FacesContext.getCurrentInstance().getELContext();
return (EntityManager) FacesContext.getCurrentInstance().getApplication().getELResolver().getValue(elContext, null, "entityManager");
}
public String cadastraComplexidade(){
//System.out.println(" Cadastra ENTRA " +complexidadeSelecionada.getId() + " " + complexidadeSelecionada.getComplexidade() + " " + complexidadeSelecionada.getFrequencia());
ComplexRepositorio repositorio = new ComplexRepositorio(entityManager());
repositorio.adicionaComplexidade(this.complexidadeSelecionada);
this.complexidadeSelecionada = new Complexidades();
//System.out.println(" Cadastra SAI " +complexidadeSelecionada.getId() + " " + complexidadeSelecionada.getComplexidade() + " " + complexidadeSelecionada.getFrequencia());
return null;
}
public List<Complexidades> getComplexidades(){
ComplexRepositorio repositorio = new ComplexRepositorio(entityManager());
return repositorio.getComplexidades();
}
public String removeComplexidade(){
ComplexRepositorio repositorio = new ComplexRepositorio(entityManager());
repositorio.removeComplexidades(this.complexidadeSelecionada);
this.complexidadeSelecionada = new Complexidades();
return null;
}
public String atualizarComplexidade(){
//System.out.println(" Atualiza ENTRA " +complexidadeSelecionada.getId() + " " + complexidadeSelecionada.getComplexidade() + " " + complexidadeSelecionada.getFrequencia());
ComplexRepositorio repositorio = new ComplexRepositorio(entityManager());
repositorio.atualizaComplexidade(this.complexidadeSelecionada);
this.complexidadeSelecionada = new Complexidades();
//System.out.println(" Atualiza SAI " +complexidadeSelecionada.getId() + " " + complexidadeSelecionada.getComplexidade() + " " + complexidadeSelecionada.getFrequencia());
return null;
}
public void setComplexidade(List<Complexidades> complexidades) {
this.complexidades = complexidades;
}
public Complexidades getComplexidadeSelecionada() {
return complexidadeSelecionada;
}
public void setComplexidadeSelecionada(Complexidades complexidade) {
this.complexidadeSelecionada = complexidade;
}
}
ENTIDADE Complexidades
@Entity
@Table(name = "TB_COMPLEXIDADES")
public class Complexidades {
@Id
@GeneratedValue
private Long id;
private String complexidade;
private Integer frequencia;
@ManyToOne
private Unidades unidade;
public Unidades getUnidade() {
return unidade;
}
public void setUnidade(Unidades unidade) {
this.unidade = unidade;
}
public Long getId() {
return id;
}
public String getComplexidade() {
return complexidade;
}
public void setComplexidade(String complexidade) {
this.complexidade = complexidade;
}
public Integer getFrequencia() {
return frequencia;
}
public void setFrequencia(Integer frequencia) {
this.frequencia = frequencia;
}
}
No Bean adicionei println que estão comentados, quando rodo com eles este é o resultado
----Após iniciar o servidor----------
Cadastra ENTRA- id = null complexidade = frequencia = 0
Cadastra SAI- id = null complexidade = null frequencia = null
-----Botão Atualizar-------------------
Atualiza ENTRA- id = 50 complexidade = AA frequencia = 10
Atualiza SAI- id = null complexidade = null frequencia = null
----Botão cadastrar depois de Editar, mesmo digitando Complexidade “BB” e Frequencia 20-----
Cadastra ENTRA- id = 50 complexidade = AA frequencia = 10
Cadastra SAI- id = null complexidade = null frequencia = null