Method not called when using the command button

0

I have two methods in two different dialogs: adicionarRelato and RetificarRelato .

adicionarRelato perfectly executes the command button click on the first dialog. But the retificarRelato of the second dialog is simply not called, and nothing happens.

View :

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                xmlns:jsp="http://java.sun.com/JSP/Page"
                template="template.xhtml">

    <ui:define name="titulo">
        Livro de Ordem
    </ui:define>

    <ui:define name="content">
        <f:metadata>
            <f:viewParam name="a" value="#{livroOrdemController.numeroArt}" valueChangeListener="#{livroOrdemController.recuperarNumeroArt}" />
        </f:metadata>

        <p:messages id="messages" autoUpdate="true" closable="true" />

        <h:form>
            <p:panel id="panelTermoDeAbertura" header="TERMO DE ABERTURA DO LIVRO DE ORDEM">

                <h:panelGrid columns="2" cellpadding="10">

                    <h:outputLabel value="Numero da ART: "/>

                    <h:outputText
                        value="#{livroOrdemController.art.numeroArt}"/>          

                    <h:outputLabel value="Nome do Proprietário: "/>
                    <h:outputText
                        value="#{livroOrdemController.art.nomeProprietario}"/>

                    <h:outputLabel value="Endereço da Obra: "/>
                    <h:outputText
                        value="#{livroOrdemController.art.enderecoObraServico.tipoLogradouro} #{livroOrdemController.art.enderecoObraServico.logradouro}, 
                                  Nº #{livroOrdemController.art.enderecoObraServico.numero}, 
                                  CEP: #{livroOrdemController.art.enderecoObraServico.cep}, 
                                  #{livroOrdemController.art.enderecoObraServico.bairro}, 
                                  #{livroOrdemController.art.enderecoObraServico.cidade} - #{livroOrdemController.art.enderecoObraServico.uf}"/>

                    <h:outputLabel value="Data Real do Início da Obra: "/>
                    <h:outputText
                        value="#{livroOrdemController.livroOrdem.dataRealInicioObra}">

                        <f:convertDateTime pattern="dd/MM/yyyy" />

                    </h:outputText>

                    <h:outputLabel value="Data Prevista para Conclusão da Obra: "/>
                    <h:outputText
                        value="#{livroOrdemController.livroOrdem.dataPrevistaConclusaoObra}">

                        <f:convertDateTime pattern="dd/MM/yyyy" />

                    </h:outputText>

                    <p:commandButton value="Adicionar Relato"
                                     immediate="true"
                                     onclick="dialogRelato.show();"/>

                </h:panelGrid>

            </p:panel>

            <br />

            <p:dialog showEffect="fade" hideEffect="fade"
                      modal="true" header="Novo Relato"
                      widgetVar="dialogRelato" minHeight="40">

                <b>
                    <h:outputLabel value="Tipo de Relato: " />
                </b>
                <h:selectOneMenu style="height: 20px; background-color: #ffffff;"
                                 value="#{livroOrdemController.tipoRelatoSelecionado}"
                                 title="Tipo de Relato"
                                 converter="tipoRelatoConverter">

                    <f:selectItems value="#{livroOrdemController.preencherComboTiposRelatos()}"/>
        </h:selectOneMenu>
                <br />
                <br />

                <b>
                    <h:outputLabel for="calendarDataOcorrencia" value="Data da Ocorrencia: " />
                </b>
                    <p:calendar id="calendarDataOcorrencia"
                                pattern="dd/MM/yyyy"
                                locale="pt_BR"
                                showOn="button"
                                value="#{livroOrdemController.dataOcorrencia}"/>
                <br />
                <br />
                <b>
                    <h:outputLabel value="Fase da Obra/Serviço: " />
                </b>
                <h:selectOneMenu style="height: 20px; background-color: #ffffff;"
                                 value="#{livroOrdemController.faseObraServicoSelecionada}"
                                 title="Fase da Obra/Serviço"
                                 required="true"
                                 requiredMessage="Fase da Obra/Serviço: Preenchimento Obrigatório"
                                 converter="faseObraServicoConverter">
                    <f:selectItems value="#{livroOrdemController.preencherComboFaseObraServico()}"/>
        </h:selectOneMenu>
                <br />
                <br />

                <b>
                    <h:outputLabel for="calendarInicioFase" value="Inicio da Fase: " />
                </b>
                    <p:calendar id="calendarInicioFase"
                                pattern="dd/MM/yyyy"
                                locale="pt_BR"
                                showOn="button"
                                value="#{livroOrdemController.dataIncioFase}"/>
                <br />
                <br />

                <b>
                    <h:outputLabel for="calendarFimFase" value="Términio da Fase: " />
                </b>
                <p:calendar id="calendarFimFase"
                            pattern="dd/MM/yyyy"
                            locale="br"
                            showOn="button"
                            value="#{livroOrdemController.dataTerminioFase}"/>
                <br />
                <br />

                <b>
                    <h:outputLabel for="inputDescricaoRelato" value="Descrição: " />
                </b>
                <br />
                <h:inputTextarea id="inputDescricaoRelato"
                                 value="#{livroOrdemController.descricao}"
                                 required="true"
                                 requiredMessage="Descrição: Preenchimento Obrigatório"/>
                <br />
                <br />

                <p:commandButton value="Adicionar Relato"
                                 action="#{livroOrdemController.adicionarRelato()}"                                   
                                 oncomplete="dialogRelato.hide();"
                                 immediate="false"
                                 update="#{artsAptasLivroOrdemController.componentes}"/>

                <p:commandButton value="Cancelar"
                                 onclick="dialogRelato.hide();" />

            </p:dialog>

        </h:form>

        <h:form>
            <ui:repeat var="itemRelato" value="#{livroOrdemController.relatos}" varStatus="status">

                <p:panel id="panelRelatos">
                    <h:outputLabel value="Data do Relato: "/>
                    <h:outputText value="#{itemRelato.dataOcorrencia}">
                        <f:convertDateTime pattern="dd/MM/yyyy" />
                    </h:outputText>
                    <br />

                    <h:outputLabel value="Tipo do Relato: "/>
                    <h:outputText value="#{itemRelato.tipoRelato.descricao}"/>
                    <br />

                    <h:outputLabel value="Fase da Obra: "/>
                    <h:outputText value="#{itemRelato.faseObraServico.descricao}"/>
                    <br />

                    <h:outputLabel value="Inicio da Fase: "/>
                    <h:outputText value="#{itemRelato.dataIncioFase}">
                        <f:convertDateTime pattern="dd/MM/yyyy" />
                    </h:outputText>
                    <br />

                    <h:outputLabel value="Términio da Fase: "/>
                    <h:outputText value="#{itemRelato.dataTerminioFase}">
                        <f:convertDateTime pattern="dd/MM/yyyy" />
                    </h:outputText>
                    <br />

                    <h:outputLabel value="Descrição: "/><br />
                    <h:outputText value="#{itemRelato.descricao}"/>
                    <br />

                    <b>
                        <h:outputLabel value="Retificações/Complementos: "/>
                        <ui:repeat var="itemRetificacao" value="#{livroOrdemController.retificacaoRelatos}"
                                   varStatus="statusRetificacao">

                            <li>
                                <h:outputText value="#{itemRetificacao.descricao}"/>
                            </li>
                        </ui:repeat>
                    </b>      
                    <br />

                    <p:commandButton value="Retificar Relato"
                                     update="#{livroOrdemController.componentes}"
                                     onclick="dialogRetificacao.show();"
                                     action="#{livroOrdemController.retificarRelato()}">

                        <f:setPropertyActionListener value="#{itemRetificacao}" target="#{livroOrdemController.relatoASerRetificado}"/>

                    </p:commandButton>
                    <br />
                    <br />

                </p:panel>

                <br />

             </ui:repeat>

            <p:dialog showEffect="fade" hideEffect="fade"
                      modal="true" header="Retificar/Complementar um Relato"
                      widgetVar="dialogRetificacao" minHeight="40">

                <b>
                    <h:outputLabel value="Tipo de Relato: " />
                </b>
                <h:inputText id="tipoRelato" disabled="true" value="#{livroOrdemController.relatoASerRetificado.tipoRelato.descricao}"/>
                <br />

                <b>
                    <h:outputLabel value="Data da Ocorrência: " />
                </b>
                <h:inputText id="dataOcorrencia" disabled="true" value="#{livroOrdemController.relatoASerRetificado.dataOcorrencia}">
                        <f:convertDateTime pattern="dd/MM/yyyy" />

                </h:inputText>
                <br />

                <b>
                    <h:outputLabel value="Fase da Obra/Serviço: " />
                </b>
                <h:inputText id="faseObraServico" disabled="true" value="#{livroOrdemController.relatoASerRetificado.faseObraServico.descricao}"/>
                <br />

                <b>
                    <h:outputLabel value="Inicio da Fase: " />
                </b>
                <h:inputText id="inicioFase" disabled="true" value="#{livroOrdemController.relatoASerRetificado.dataIncioFase}">
                        <f:convertDateTime pattern="dd/MM/yyyy" />
                </h:inputText>
                <br />

                <b>
                    <h:outputLabel value="Términio da Fase: " />
                </b>
                <h:inputText id="terminioFase" disabled="true" value="#{livroOrdemController.relatoASerRetificado.dataTerminioFase}">
                        <f:convertDateTime pattern="dd/MM/yyyy" />
                </h:inputText>
                <br />

                <b>
                    <h:outputLabel value="Descrição: " />
                </b>
                <h:inputTextarea value="#{livroOrdemController.descricaoRetificacao}"/>

                <br />

                <p:commandButton value="Retificar/Complementar Relato"
                                 oncomplete="dialogRelato.hide();"
                                 action="#{livroOrdemController.retificarRelato()}"/>

                <p:commandButton value="Cancelar"
                                 onclick="dialogRetificacao.hide();" />

            </p:dialog>
        </h:form>

    </ui:define>

</ui:composition>

Controller :

@ManagedBean
@ViewScoped
public class LivroOrdemController {
    @EJB
    private ObjectDao objectDao;
    @EJB
    private RelatoDao relatoDao;
    @EJB
    private TipoRelatoDao tipoRelatoDao;
    @EJB
    private FaseObraServicoDao faseObraServicoDao;
    @EJB
    private LivroOrdemDao livroOrdemDao;
    @EJB
    private RetificacaoRelatoDao retificacaoRelatoDao;

    private Art art;
    private String componentes = "@([id$=panelTermoDeAbertura], [id$=panelRelatos], "
            + "[id$=tipoRelato], [id$=dataOcorrencia], [id$=faseObraServico], "
            + "[id$=inicioFase], [id$=terminioFase])";
    private LivroOrdem livroOrdem;
    private String numeroArt;
    private Date dataOcorrencia;
    private String descricao;
    private String descricaoRetificacao;
    private FaseObraServico faseObraServicoSelecionada;
    private Date dataIncioFase;
    private Date dataTerminioFase;
    private TipoRelato tipoRelatoSelecionado;
    private Relato relato;
    private RetificacaoRelato retificacaoRelato;
    private Relato relatoASerRetificado;
    private List<Relato> relatos = new ArrayList<Relato>();
    private boolean renderizaDataInicioFase;
    private boolean renderizaDataTerminioFase;
    private boolean renderizaMenuFaseObra;
    private List<RetificacaoRelato> retificacaoRelatos;

    public LivroOrdemController() {
    }

    public Art getArt() {
        return art;
    }

    public void setArt(Art art) {
        this.art = art;
    }

    public String getComponentes() {
        return componentes;
    }

    public void setComponentes(String componentes) {
        this.componentes = componentes;
    }

    public LivroOrdem getLivroOrdem() {
        return livroOrdem;
    }

    public void setLivroOrdem(LivroOrdem livroOrdem) {
        this.livroOrdem = livroOrdem;
    } 

    public ObjectDao getObjectDao() {
        return objectDao;
    }

    public void setObjectDao(ObjectDao objectDao) {
        this.objectDao = objectDao;
    }

    public String getNumeroArt() {
        return numeroArt;
    }

    public void setNumeroArt(String numeroArt) {
        this.numeroArt = numeroArt;
    }

    public Date getDataOcorrencia() {
        return dataOcorrencia;
    }

    public void setDataOcorrencia(Date dataOcorrencia) {
        this.dataOcorrencia = dataOcorrencia;
    }

    public RelatoDao getRelatoDao() {
        return relatoDao;
    }

    public void setRelatoDao(RelatoDao relatoDao) {
        this.relatoDao = relatoDao;
    }

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public FaseObraServico getFaseObraServicoSelecionada() {
        return faseObraServicoSelecionada;
    }

    public void setFaseObraServicoSelecionada(FaseObraServico faseObraServicoSelecionada) {
        this.faseObraServicoSelecionada = faseObraServicoSelecionada;
    }

    public Date getDataIncioFase() {
        return dataIncioFase;
    }

    public void setDataIncioFase(Date dataIncioFase) {
        this.dataIncioFase = dataIncioFase;
    }

    public Date getDataTerminioFase() {
        return dataTerminioFase;
    }

    public void setDataTerminioFase(Date dataTerminioFase) {
        this.dataTerminioFase = dataTerminioFase;
    }

    public TipoRelato getTipoRelatoSelecionado() {
        return tipoRelatoSelecionado;
    }

    public void setTipoRelatoSelecionado(TipoRelato tipoRelatoSelecionado) {
        this.tipoRelatoSelecionado = tipoRelatoSelecionado;
    }

    public RetificacaoRelatoDao getRetificacaoRelatoDao() {
        return retificacaoRelatoDao;
    }

    public void setRetificacaoRelatoDao(RetificacaoRelatoDao retificacaoRelatoDao) {
        this.retificacaoRelatoDao = retificacaoRelatoDao;
    }

    public Relato getRelato() {
        return relato;
    }

    public void setRelato(Relato relato) {
        this.relato = relato;
    }

    public List<Relato> getRelatos() {
        return relatos;
    }

    public void setRelatos(List<Relato> relatos) {
        this.relatos = relatos;
    }

    public TipoRelatoDao getTipoRelatoDao() {
        return tipoRelatoDao;
    }

    public void setTipoRelatoDao(TipoRelatoDao tipoRelatoDao) {
        this.tipoRelatoDao = tipoRelatoDao;
    }

    public FaseObraServicoDao getFaseObraServicoDao() {
        return faseObraServicoDao;
    }

    public void setFaseObraServicoDao(FaseObraServicoDao faseObraServicoDao) {
        this.faseObraServicoDao = faseObraServicoDao;
    }

    public LivroOrdemDao getLivroOrdemDao() {
        return livroOrdemDao;
    }

    public void setLivroOrdemDao(LivroOrdemDao livroOrdemDao) {
        this.livroOrdemDao = livroOrdemDao;
    }

    public RetificacaoRelato getRetificacaoRelato() {
        return retificacaoRelato;
    }

    public void setRetificacaoRelato(RetificacaoRelato retificacaoRelato) {
        this.retificacaoRelato = retificacaoRelato;
    }

    public String getDescricaoRetificacao() {
        return descricaoRetificacao;
    }

    public void setDescricaoRetificacao(String descricaoRetificacao) {
        this.descricaoRetificacao = descricaoRetificacao;
    }

    public Relato getRelatoASerRetificado() {
        return relatoASerRetificado;
    }

    public List<RetificacaoRelato> getRetificacaoRelatos() {
        return retificacaoRelatos;
    }

    public void setRetificacaoRelatos(List<RetificacaoRelato> retificacaoRelatos) {
        this.retificacaoRelatos = retificacaoRelatos;
    }

    public void setRelatoASerRetificado(Relato relatoASerRetificado) {
        this.relatoASerRetificado = relatoASerRetificado;
    }

    public boolean isRenderizaDataInicioFase() {
        return renderizaDataInicioFase;
    }

    public void setRenderizaDataInicioFase(boolean renderizaDataInicioFase) {
        this.renderizaDataInicioFase = renderizaDataInicioFase;
    }

    public boolean isRenderizaDataTerminioFase() {
        return renderizaDataTerminioFase;
    }

    public void setRenderizaDataTerminioFase(boolean renderizaDataTerminioFase) {
        this.renderizaDataTerminioFase = renderizaDataTerminioFase;
    }

    public boolean isRenderizaMenuFaseObra() {
        return renderizaMenuFaseObra;
    }

    public void setRenderizaMenuFaseObra(boolean renderizaMenuFaseObra) {
        this.renderizaMenuFaseObra = renderizaMenuFaseObra;
    }

    public void recuperarNumeroArt(ValueChangeEvent valueChangeEvent) {
        numeroArt = valueChangeEvent.getNewValue().toString();

        recuperarLivroOrdem();
        recuperarRelatos();
        recuperarArt();
    }

    public void recuperarArt() {
        Map<String, Object> params = new HashMap<String, Object>();
        Art artTemp = new Art();
        String queryArt = "SELECT a.numeroart, a.nomeProprietario, a.cepobraservico, a.tipologradouroobraservico, "
                + "a.logradouroobraservico, a.numeroobraservico, a.bairroobraservico, a.cidadeobraservico, a.ufobraservico, "
                + "a.databaixa "
                + "FROM Art a WHERE a.numeroart = :numeroart";
        params.put("numeroart", numeroArt);
        Object[] object = objectDao.pesqQuery(queryArt, params);

        artTemp.setNumeroArt((String) object[0]);
        artTemp.setNomeProprietario((String) object[1]);
        artTemp.getEnderecoObraServico().setCep((String) object[2]);
        artTemp.getEnderecoObraServico().setTipoLogradouro((String) object[3]);
        artTemp.getEnderecoObraServico().setLogradouro((String) object[4]);
        artTemp.getEnderecoObraServico().setNumero((String) object[5]);
        artTemp.getEnderecoObraServico().setBairro((String) object[6]);
        artTemp.getEnderecoObraServico().setCidade((String) object[7]);
        artTemp.getEnderecoObraServico().setUf((String) object[8]);
        artTemp.setDataBaixa((Date) object[9]);

        art = artTemp;    
    }

    public void recuperarLivroOrdem() {
        Map<String, Object> params = new HashMap<String, Object>();
        String queryLivroOrdem = "SELECT lo FROM LivroOrdem lo WHERE art_numeroart = :numeroart";
        params.put("numeroart", numeroArt);
        livroOrdem = livroOrdemDao.pesqParam(queryLivroOrdem, params);
    }

    public void adicionarRelato() {
        relato = new Relato();
        relato.setTipoRelato(tipoRelatoSelecionado);
        relato.setDataOcorrencia(dataOcorrencia);
        relato.setFaseObraServico(faseObraServicoSelecionada);
        relato.setDataIncioFase(dataIncioFase);
        relato.setDataTerminioFase(dataTerminioFase);
        relato.setDescricao(descricao);
        relato.setLivroOrdem(livroOrdem);
        relatoDao.salvar(relato);

        dataIncioFase = null;
        dataTerminioFase = null;
    }

    public void retificarRelato() {
        retificacaoRelato = new RetificacaoRelato();
        retificacaoRelato.setRelato(relatoASerRetificado);
        retificacaoRelato.setDescricao(descricaoRetificacao);
        retificacaoRelatoDao.salvar(retificacaoRelato); 
    }

    public SelectItem[] preencherComboTiposRelatos() {
        SelectItem[] options = null;
        String query = "SELECT tr FROM TipoRelato tr";
        List<TipoRelato> tipoRelatos = tipoRelatoDao.listPesq(query);

        if (tipoRelatos != null && tipoRelatos.size() > 0) {
            int i = 0;
            options = new SelectItem[tipoRelatos.size() + 1];
            options[i++] = new SelectItem(null, "Selecione...");

            for (TipoRelato tr : tipoRelatos) {
                options[i++] = new SelectItem(tr, tr.getDescricao());
            }
        }

        return options;
    }

    public SelectItem[] preencherComboFaseObraServico() {
        SelectItem[] options = null;
        String query = "SELECT fos FROM FaseObraServico fos";
        List<FaseObraServico> faseObraServicos = faseObraServicoDao.listPesq(query);

        if (faseObraServicos != null && faseObraServicos.size() > 0) {
            int i = 0;
            options = new SelectItem[faseObraServicos.size() + 1];
            options[i++] = new SelectItem(null, "Selecione...");

            for (FaseObraServico fo : faseObraServicos) {
                options[i++] = new SelectItem(fo, fo.getDescricao());
            }
        }

        return options;
    }

    public void recuperarRelatos() {
        Map<String, Object> params = new HashMap<String, Object>();
        String queryRelato = "SELECT r.idRelato, r.dataOcorrencia, r.dataIncioFase, r.dataTerminioFase, r.descricao AS descricaoRelato, "
                + "tr.descricao AS tiporelato, fos.descricao AS faseobraservico "
                + "FROM Relato r "
                + "LEFT JOIN TipoRelato tr ON tr.idTipoRelato = r.tiporelato_idtiporelato "
                + "LEFT JOIN FaseObraServico fos ON fos.idFaseObraServico = r.faseobraservico_idfaseobraservico "
                + "WHERE r.livroordem_idlivroordem = :idlivroordem ORDER BY dataocorrencia DESC";

        params.put("idlivroordem", livroOrdem.getIdLivroOrdem());
        List<Object[]> objects = objectDao.listPesqQuery(queryRelato, params);

        for (Object[] o : objects) {
            Relato relatoTemp = new Relato();
            BigInteger id = (BigInteger) o[0];
            relatoTemp.setIdRelato(id.longValue());
            relatoTemp.setDataOcorrencia((Date) o[1]);
            relatoTemp.setDataIncioFase((Date) o[2]);
            relatoTemp.setDataTerminioFase((Date) o[3]);
            relatoTemp.setDescricao((String) o[4]);

            relatoTemp.setTipoRelato(new TipoRelato());
            relatoTemp.getTipoRelato().setDescricao((String) o[5]);
            relatoTemp.setFaseObraServico(new FaseObraServico());
            relatoTemp.getFaseObraServico().setDescricao((String) o[6]);

            relatos.add(relatoTemp);
        }
    }

    public void recuperarRetificacoes() {
        Map<String, Object> params = new HashMap<String, Object>();
        String queryRetificacoes = "SELECT rr.descricao FROM RetificacaoRelato rr"
                + "WHERE rr.relato_idrelato = :idrelato";
        params.put("idrelato", relatoASerRetificado.getIdRelato());

        List<Object[]> objects = objectDao.listPesqQuery(queryRetificacoes, params);

        for (Object[] o : objects) {
            RetificacaoRelato retificacaoRelatoTemp = new RetificacaoRelato();
            retificacaoRelatoTemp.setDescricao((String) o[0]);
            retificacaoRelatos.add(retificacaoRelatoTemp);
        }
    }

    public void onSelectMenuTipoRelatoChange() {

        if(tipoRelatoSelecionado.getDescricao().equals("Visitas e Orientações Técnicas") || 
                tipoRelatoSelecionado.getDescricao().equals("Interrupções dos Trabalhos") ||
                tipoRelatoSelecionado.getDescricao().equals("Prestadores de Serviços")) {
            renderizaDataInicioFase = true;
            renderizaDataTerminioFase = true;
        }
    }
}
    
asked by anonymous 10.12.2018 / 00:19

1 answer

0

Put this on your button

immediate="true"
    
10.12.2018 / 20:28