4
respostas

DataTable com filter não carregar formulário para atualização

Boa tarde, seguindo as aulas eu percebi que ao fazer a busca ele me retorna a row que queria porém ao clicar em editar ele não preenche o formulário.

E o XHTML.

<?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:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui">
      <ui:decorate template="/templates/layout.xhtml">
           <ui:define name="centro">
                <br/><br/>
                <h:form id="formquarto">
                <p:growl/>
                    <p:panel id="panel" header="Cadastro de Quartos" style="width:500px; margin-bottom:20px">
                       <h:panelGrid columns="2">
                           <h:outputLabel for="numero" value="Número do Quarto:  "/>
                                   <p:inputMask id="numero" value="#{quartoBean.quarto.numero}" mask="999" required="true" requiredMessage="Digite o número do quarto que deseja cadastrar!" style="width:135px"/>
                            <h:outputLabel for="andar" value="Andar do Quarto: "/>
                                   <p:inputMask id="andar" value="#{quartoBean.quarto.andar}" mask="9" required="true" requiredMessage="Digite o andar do quarto que deseja cadastrar!" style="width:135px"/>                                                          
                            <h:outputLabel for="tipo" value="Tipo do Quarto: "/>
                            <p:selectOneMenu id="tipo" value="#{quartoBean.quarto.tipo}" required="true" requiredMessage="Selecione o tipo do quarto!" >
                                <f:selectItem itemLabel="Selecione" itemValue="" noSelectionOption="true" />
                                <f:selectItem itemLabel="Solteiro" itemValue="Solteiro"/>
                                 <f:selectItem itemLabel="Duplo Solteiro" itemValue="Duplo Solteiro"/>           
                                <f:selectItem itemLabel="Casal" itemValue="Casal"/>
                                <f:selectItem itemLabel="Família" itemValue="Família"/>
                            </p:selectOneMenu>
                            <h:outputLabel for="descricao" value="Descrição: "/>
                            <p:inputTextarea id="descricao" value="#{quartoBean.quarto.descricao}" rows="5" cols="30" counter="display" maxlength="100" counterTemplate="{0} caracteres restantes." autoResize="false"  required="true" requiredMessage="Digite a descrição do quarto!"/>                                                          
                            <h:outputLabel for="hidden" value=""/>
                            <h:outputText id="display" />
                            <h:outputLabel for="preco" value="Valor do quarto "/>
                                       <p:inputNumber id="preco" value="#{quartoBean.quarto.valor}" decimalSeparator="," thousandSeparator="." symbol="R$ " required="true" requiredMessage="Digite o valor do quarto que deseja cadastrar!"/>                                                          
                            <h:outputLabel for="situacaoquarto" value="Situação do Quarto: "/>
                            <p:selectOneMenu id="situacaoquarto" value="#{quartoBean.idSituacaoQuarto}" required="true" requiredMessage="Selecione o situação do quarto!" >     
                                        <f:selectItem itemLabel="Selecione" itemValue="" noSelectionOption="true" />         
                                        <f:selectItems value="#{quartoBean.listaSituacaoQuarto}" var="situacaoquarto1" itemLabel="#{situacaoquarto1.nome}" itemValue="#{situacaoquarto1.id}"/> 
                            </p:selectOneMenu>
                        </h:panelGrid>
                        <br/> 
                        <div align="center">
                               <p:commandButton value="Salvar" action="#{quartoBean.gravar}" update="formquarto :formtablequarto:tablequarto"/>                   
                            <p:commandButton value="Limpar" action="#{quartoBean.limpar}" update="formquarto"/>    
                        </div>
                   </p:panel>
                </h:form>

                <h:form id="formtablequarto">
                    <p:dataTable id="tablequarto" value="#{quartoBean.listaQuarto}" var="quarto" paginator="true" rows="5" style="text-align:center">
                    <p:column filter="#{quarto.numero}" headerText="Numero" sortBy="#{quarto.numero}" filterBy="#{quarto.numero}" filterMatchMode="startsWith">
                        <h:outputLabel value="#{quarto.numero}" />
                    </p:column>
                    <p:column filter="#{quarto.andar}" headerText="Andar">
                        <h:outputLabel value="#{quarto.andar}" />
                    </p:column>
                    <p:column filter="#{quarto.tipo}" headerText="Tipo">
                        <h:outputLabel value="#{quarto.tipo}" />
                    </p:column>
                    <p:column filter="#{quarto.descricao}" headerText="Descrição">
                        <h:outputLabel value="#{quarto.descricao}" />
                    </p:column>
                    <p:column filter="#{quarto.valor}" headerText="Preço">
                        <h:outputLabel value="R$ #{quarto.valor}" />
                    </p:column>
                    <p:column filter="#{quarto.situacaoq.nome}" headerText="Situação do Quarto">
                        <h:outputLabel value="#{quarto.situacaoq.nome}" />
                    </p:column>
                    <p:column headerText="Editar">
                        <p:commandButton value="Editar" action="#{quartoBean.editar(quarto)}" update="formquarto :formtablequarto:tablequarto"/>                            
                    </p:column>
                    <p:column headerText="Excluir">
                                <p:commandButton value="Excluir" action="#{quartoBean.excluir(quarto)}" update="tablequarto">
                                <p:confirm header="Confirmação" message="Tem certeza que deseja excluir esse quarto?" icon="ui-icon-alert"/>
                            </p:commandButton>
                                <p:confirmDialog global="true" showEffect="fade" hideEffect="fade">
                                    <div align="center">
                                        <p:commandButton value="Sim" type="button" styleClass="ui-confirmdialog-yes" icon="ui-icon-check"/>
                                        <p:commandButton value="Não" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close"/>
                                    </div>
                                </p:confirmDialog>
                            </p:column>        
                </p:dataTable>
                </h:form>
           </ui:define>
      </ui:decorate>
</html>

QuartoBean.

package br.edu.ifms.bean;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.primefaces.context.RequestContext;

import br.edu.ifms.dao.QuartoDao;
import br.edu.ifms.dao.SituacaoQuartoDao;
import br.edu.ifms.modelo.Quarto;
import br.edu.ifms.modelo.SituacaoQuarto;

@ManagedBean
@ViewScoped
public class QuartoBean {
    Quarto quarto = new Quarto();
    SituacaoQuarto situacaoq = new SituacaoQuarto();

    private int idSituacaoQuarto;

    public void gravar(){
        QuartoDao dao = new QuartoDao();
        if(dao.buscaPorId(quarto.getId())!=null){
            SituacaoQuarto situacaoquarto1 = new SituacaoQuarto();
            SituacaoQuartoDao daosituacao = new SituacaoQuartoDao();
            situacaoquarto1 = daosituacao.buscaPorId(idSituacaoQuarto);
            quarto.setSituacaoq(situacaoquarto1);
            dao.atualizar(quarto);
            quarto = new Quarto();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,"Quarto atualizado com sucesso!",null);
            RequestContext.getCurrentInstance().showMessageInDialog(message);
        }else{
            SituacaoQuarto situacaoquarto1 = new SituacaoQuarto();
            SituacaoQuartoDao daosituacao = new SituacaoQuartoDao();
            situacaoquarto1 = daosituacao.buscaPorId(idSituacaoQuarto);
            quarto.setSituacaoq(situacaoquarto1);
            dao.cadastrar(quarto);
            quarto = new Quarto();
            FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO,"Quarto cadastrado com sucesso!",null);
            RequestContext.getCurrentInstance().showMessageInDialog(message);
        }
    }
    public void excluir(Quarto quarto){
        QuartoDao dao = new QuartoDao();
        dao.excluir(quarto);
        quarto = new Quarto();
    }
    public void editar(Quarto quarto){
        this.idSituacaoQuarto = quarto.getSituacaoq().getId();
        this.quarto = quarto;
    }
    public void limpar(){
        this.idSituacaoQuarto = 0;
        quarto =  new Quarto();

    }
    public List<Quarto> getlistaQuarto(){
        List<Quarto> lista = new ArrayList<Quarto>();
        QuartoDao dao = new QuartoDao();
        lista = dao.listaTodos();
        return lista;
    }
    public List<SituacaoQuarto> getlistaSituacaoQuarto(){
        List<SituacaoQuarto> lista = new ArrayList<SituacaoQuarto>();
        SituacaoQuartoDao dao = new SituacaoQuartoDao();
        lista = dao.listaTodos();
        return lista;
    }
    public Quarto getQuarto() {
        return quarto;
    }

    public void setQuarto(Quarto quarto) {
        this.quarto = quarto;
    }

    public SituacaoQuarto getSituacaoq() {
        return situacaoq;
    }
    public void setSituacaoq(SituacaoQuarto situacaoq) {
        this.situacaoq = situacaoq;
    }
    public int getIdSituacaoQuarto() {
        return idSituacaoQuarto;
    }

    public void setIdSituacaoQuarto(int idSituacaoQuarto) {
        this.idSituacaoQuarto = idSituacaoQuarto;
    }

}
4 respostas

Ele não salva de nenhum jeito ou depois que atualiza a página a informação editada aparece?

Ele simplesmente não carrega nada, nem preenche o formulário porém se eu não faço o filter procuro na mão o formulário é preenchido.

Oi Yuri, só para fazermos um teste, tenta usar um h:commandButton, sem o ajax. Ou diz para a tag do primeFaces que você não quer ajax => ajax=false. Só para ver se o problema é no managedBean ou na atualização da tela em si.

Nada.