Boa noite!
Preciso de uma ajuda com o componente AUTOCOMPLETE PRIMEFACES, ele está funcionando perfeitamente, porém, meu problema ocorre quando existe algum campo barrado na validação, pois o value apaga!
Exemplo:
No form existem 5 campos:
CÓDIGO
DESCRIÇÃO
VALOR
TAREFA (Campo autocomplete que busca na entidade TAREFA)
DATA
Em um novo cadastro, são preenchidos os campos CÓDIGO, DESCRIÇÃO, VALOR E TAREFA, quando submeto o form clicando em salvar, o valid do campo DATA verifica que o mesmo não foi preenchido, neste momento o campo TAREFA apaga seu conteúdo!
Apenas ele!
Alguém consegue me dar uma HELLLLPPPPP?
Obrigado!
Poste o código do botão Salvar() e Olhe seu process e seu update
Bean
@Controller(“subareaBean”)
@Scope(“view”)
public class SubareaBean implements Serializable {
private Subarea subarea;
private List<Subarea> subareaSS = new ArrayList<Subarea>();
private Subarea subareaExclusao;
private List<Subarea> subareaFiltradaS;
private List<Area> areaSS;
@Autowired
private SubareaServico subareaServico;
@Autowired
private AreaServico areaServico;
public void iniciarBean() {
subareaSS = subareaServico.listarTodos();
}
public void atualizarSubarea() {
subareaSS = subareaServico.listarTodos();
}
public void novaSubarea() {
subarea = new Subarea();
}
public void salvar() throws InterruptedException {
Thread.sleep(1500);
try {
subareaServico.salvar(subarea);
subareaSS = subareaServico.listarTodos();
subarea = null;
FacesUtil.addInfoMessage("SALVO COM SUCESSO!");
} catch (RuntimeException ex) {
FacesUtil.addErrorMessage("ERRO AO TENTAR GRAVAR!");
}
}
public List<Area> completeTheme(String descricao) {
List<Area> allThemes = areaServico.listarTodosAtivos();
List<Area> filteredThemes = new ArrayList<Area>();
for (int i = 0; i < allThemes.size(); i++) {
Area skin = allThemes.get(i);
if (skin.getDescricao().toLowerCase().contains(descricao)) {
filteredThemes.add(skin);
}
if (skin.getDescricao().toUpperCase().contains(descricao)) {
filteredThemes.add(skin);
}
}
return filteredThemes;
}
public void editar(Subarea subarea) {
this.subarea = subarea;
}
public void prepararExclusao(Subarea subarea) {
this.subareaExclusao = subarea;
}
public void excluir() {
subareaServico.deletar(subareaExclusao);
Mensagem.mensagemInformacao("EXCLUIDO COM SUCESSO!");
subareaSS = new SubareaDAO().listarTodos();
subareaFiltradaS = null;
}
public void voltar() {
subarea = null;
}
public String getDataAtual() {
return new SimpleDateFormat("dd/MM/yyyy")
.format(new Date());
}
public Subarea getSubarea() {
return subarea;
}
public void setSubarea(Subarea subarea) {
this.subarea = subarea;
}
public List<Subarea> getSubareaSS() {
return subareaSS;
}
public void setSubareaSS(List<Subarea> subareaSS) {
this.subareaSS = subareaSS;
}
public Subarea getSubareaExclusao() {
return subareaExclusao;
}
public void setSubareaExclusao(Subarea subareaExclusao) {
this.subareaExclusao = subareaExclusao;
}
public List<Subarea> getSubareaFiltradaS() {
return subareaFiltradaS;
}
public void setSubareaFiltradaS(List<Subarea> subareaFiltradaS) {
this.subareaFiltradaS = subareaFiltradaS;
}
public SubareaServico getSubareaServico() {
return subareaServico;
}
public void setSubareaServico(SubareaServico subareaServico) {
this.subareaServico = subareaServico;
}
public List<Area> getAreaSS() {
return areaSS;
}
public void setAreaSS(List<Area> areaSS) {
this.areaSS = areaSS;
}
public AreaServico getAreaServico() {
return areaServico;
}
public void setAreaServico(AreaServico areaServico) {
this.areaServico = areaServico;
}
}
package br.focvs.consulting.servico.impl;
/**
-
@author Vagner J Santos (VJS)
-
@Date 20190921
-
@version 2020.0.0
*/
import br.focvs.consulting.modelo.Area;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import br.focvs.consulting.modelo.Subarea;
import br.focvs.consulting.modelo.Area;
import br.focvs.consulting.servico.SubareaServico;
import br.focvs.consulting.servico.AreaServico;
import java.util.ArrayList;
@Service(value = “subareaServico”)
@Transactional
public class SubareaServicoImpl implements SubareaServico{
@PersistenceContext
private EntityManager entityManager;
@Override
public void salvar(Subarea subarea) {
entityManager.merge(subarea);
}
@SuppressWarnings("unchecked")
@Override
public List<Subarea> listarTodos() {
return entityManager.createQuery("from cad_subarea_juridica").getResultList();
}
@Override
public void excluir(Subarea subarea) {
subarea = entityManager.merge(subarea);
entityManager.remove(subarea);
}
@Override
public void deletar(Subarea subarea) {
subarea.setDeletado("1");
entityManager.merge(subarea);
}
}
<p:panel style="height: 595px; width: 101%; margin-left: 0px; margin-right: 0px; padding: 0px; border-style: none" id="painel-subarea" rendered="#{subareaBean.subarea != null}">
<div class="ferramenta">
<div style="float: left"> <img style="padding-left: 21px; padding-top: 14px; width: 41px; height: 32px" src="#{request.contextPath}/css/favicon.ico" alt="image host"/></div>
<div style="float: left; margin-left: 14px"> <h1 class="h1-text">SUBAREA JURÍDICA</h1></div>
<p:commandButton styleClass="button-salvar" value="SALVAR" id="btn-salvar-subarea" action="#{subareaBean.salvar}" update="form_subarea" />
<p:commandButton styleClass="button-cancelar" value="CANCELAR" action="#{subareaBean.voltar()}" update="form_subarea" immediate="true" />
</div>
<div class="ui-g">
<div class="ui-g-2">
<div class="div-space-layout">
<p:outputLabel styleClass="label-text" value="CÓDIGO" /><BR/>
<p:inputText style="width: 80%; margin-top: 2.5px" value="#{subareaBean.subarea.codigo}" />
</div>
</div>
<div class="ui-g-3">
<div class="div-space-layout">
<p:outputLabel styleClass="label-text" value="DESCRIÇÃO" /><BR/>
<p:inputText style="width: 80%; margin-top: 2.5px" value="#{subareaBean.subarea.descricao}" />
</div>
</div>
<div class="ui-g-2">
<div class="div-space-layout">
<p:outputLabel styleClass="label-text" value="CADASTRO"/><BR/>
<p:calendar value="#{subareaBean.subarea.dt_cadastro}" style="width: 80%; margin-top: 2.5px" pattern="dd/MM/yyyy" navigator="true" yearRange="1950:2050"/>
</div>
</div>
<div class="ui-g-3">
<div class="div-space-layout">
<p:outputLabel styleClass="label-text" value="AREA" for="area" /><BR/>
<p:autoComplete id="area" style="margin-top: 2.5px" inputStyle="width: 160%" value="#{subareaBean.subarea.area}" autocomplete="#{subareaBean.completeTheme(descricao)}" completeMethod="#{subareaBean.completeTheme}"
var="area" itemLabel="#{area.descricao}" converter="areaConverter" itemValue="#{area}" forceSelection="true" />
</div>
</div>
<div class="ui-g-2">
<div class="div-space-layout">
<p:outputLabel styleClass="label-text" value="STATUS" /><br/>
<p:selectOneMenu style="width: 80%; margin-top: 2.5px" title="STATUS" value="#{subareaBean.subarea.status}" >
<f:selectItem itemLabel="Ativo" itemValue="SIM" />
<f:selectItem itemLabel="Inativo" itemValue="NÃO" />
</p:selectOneMenu>
</div>
</div>
<div class="ui-g-2">
<div class="div-space-layout">
<p:outputLabel styleClass="label-text" value="TECNICA" /><br/>
<p:selectOneMenu style="width: 80%; margin-top: 2.5px" title="TECNICA" value="#{subareaBean.subarea.tecnico}" >
<f:selectItem itemLabel=" " itemValue="#{null}"/>
<f:selectItem itemLabel="Sim" itemValue="SIM" />
<f:selectItem itemLabel="Não" itemValue="NÃO" />
</p:selectOneMenu>
</div>
</div>
</div>
</p:panel>
<p:blockUI block="layout" trigger="btn-salvar-subarea" />