Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não consigo trazer o resultado do imc

Bom dia, quero trazer o resultado do imc no campo inputText mais não estou conseguindo fazer com que isso ocorra! No consóle o resultado parece mais no componente não.

<?xml version="1.0" encoding="UTF-8" ?>
<!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://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets">

<ui:composition template="/template/template.xhtml">
    <ui:define name="conteudo">

        <h:form id="formularioPessoa">
            <p:growl id="mensagem" showDetail="true" sticky="true" />
            <p:fieldset legend="Cadastro de cliente">
                <h:panelGrid columns="8">
                    <p:outputLabel value="Nome: " for="nome" />
                    <p:inputText id="nome" value="#{pessoaBean.pessoa.nome}" size="30"
                        placeholder="Nome completo" />

                    <p:outputLabel value="Celular: " for="celular" />
                    <p:inputMask id="celular" value="#{pessoaBean.pessoa.celular}"
                        mask="(999) 9 9999-9999" />

                    <h:panelGrid columns="8" id="painelPessoa">
                        <p:outputLabel value="Pessoa: " for="pessoa" />
                        <p:selectOneMenu id="pessoa"
                            value="#{pessoaBean.pessoa.tipoPessoa}">
                            <f:selectItem itemValue="" itemLabel="Selecione..." />
                            <f:selectItem itemValue="Juridíca" itemLabel="Juridíca" />
                            <f:selectItem itemValue="Fisíca" itemLabel="Fisíca" />
                            <p:ajax event="change" update="painelPessoa" />
                        </p:selectOneMenu>

                        <p:outputLabel value="CPF: " for="cpf"
                            rendered="#{pessoaBean.pessoa.tipoPessoa == 'Fisíca'}" />
                        <p:inputMask mask="999.999.999-99" id="cpf"
                            rendered="#{pessoaBean.pessoa.tipoPessoa == 'Fisíca'}"
                            value="#{pessoaBean.pessoa.cpf}" />

                        <p:outputLabel value="CNPJ: " for="cnpj"
                            rendered="#{pessoaBean.pessoa.tipoPessoa == 'Juridíca'}" />
                        <p:inputMask mask="99.999.999/9999-99" id="cnpj"
                            rendered="#{pessoaBean.pessoa.tipoPessoa == 'Juridíca'}"
                            value="#{pessoaBean.pessoa.cnpj}" />
                    </h:panelGrid>
                </h:panelGrid>

                <h:panelGrid columns="8">
                    <p:outputLabel value="Altura: " for="altura" />
                    <p:inputText id="altura" value="#{pessoaBean.pessoa.altura}" />

                    <p:outputLabel value="Peso: " for="peso" />
                    <p:inputText id="peso" value="#{pessoaBean.pessoa.peso}" />

                    <p:outputLabel value="Idade: " for="idade" />
                    <p:inputText id="idade" value="#{pessoaBean.pessoa.idade}" />

                </h:panelGrid>

                <h:panelGrid columns="4">
                    <p:outputLabel value="Cidade: " for="cidade" />
                    <p:inputText id="cidade"
                        value="#{pessoaBean.pessoa.endereco.cidade}" size="30" />

                    <p:outputLabel value="Bairro: " for="bairro" />
                    <p:inputText id="bairro"
                        value="#{pessoaBean.pessoa.endereco.bairro}" size="30" />
                </h:panelGrid>
            </p:fieldset>

            <p:toolbar>
                <f:facet name="left">
                    <p:commandButton value="Salvar"
                        actionListener="#{pessoaBean.salvar}"
                        update="formularioPessoa :formularioDialogo" />

                    <p:commandButton value="Buscar"
                        action="#{pessoaBean.formularioTabela}" />

                    <p:commandButton value="Limpar" type="reset" />

                    <span class="ui-separator"> <span
                        class="ui-icon ui-icon-grip-dotted-vertical" />
                    </span>

                    <p:commandButton value="Informação"
                        onclick="PF('pessoaDialogo').show();" />
                </f:facet>
            </p:toolbar>
        </h:form>

        <p:dialog appendTo="@(body)" modal="true" resizable="false"
            closable="true" draggable="false" widgetVar="pessoaDialogo"
            header="Informação">
            <h:form id="formularioDialogo">
                <p:dataTable emptyMessage="Nenhum Cliente encontrado"
                    value="#{pessoaBean.listaPessoas}" var="pessoa">
                    <p:column headerText="Nome">
                        <h:outputText value="#{pessoa.nome}" />
                    </p:column>

                    <p:column headerText="Celular">
                        <h:outputText value="#{pessoa.celular}" />
                    </p:column>

                    <p:column headerText="Peso">
                        <h:outputText value="#{pessoa.peso}" />
                    </p:column>

                    <p:column headerText="Altura">
                        <h:outputText value="#{pessoa.altura}" />
                    </p:column>

                    <p:column headerText="Pesquisar">
                        <p:commandButton value="Calcular imc"
                            actionListener="#{pessoaBean.calcularImc(pessoa)}"
                            oncomplete="PF('calcularImc').show();" update=":imc" />
                    </p:column>


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

        <p:dialog appendTo="@(body)" modal="true" resizable="false"
            closable="true" draggable="false" widgetVar="calcularImc"
            header="IMC">
            <h:form id="imc">
                <h:panelGrid columns="2">
                    <p:outputLabel value="IMC: " />
                    <p:inputText value="#{pessoaBean.pessoa.resultadoImc}" />
                </h:panelGrid>
            </h:form>
        </p:dialog>


    </ui:define>
</ui:composition>

</html>
public Double calcularImc(Pessoa pessoa) {
        Double aux = pessoa.getPeso()
                / (pessoa.getAltura() * pessoa.getAltura());
        pessoa.setResultadoImc(aux);
        System.out.println("Resultado: " + pessoa.getResultadoImc());
        return aux;
    }

Aqui começa os meus dialog onde tenho uma lista de pessoas com informaçoes necessarias, e depois um metodo que ira calcular o imc da pessoa, mais no meu inputText não vem nada.

<p:commandButton value="Informação"
                        onclick="PF('pessoaDialogo').show();" />
                </f:facet>
            </p:toolbar>
        </h:form>

        <p:dialog appendTo="@(body)" modal="true" resizable="false"
            closable="true" draggable="false" widgetVar="pessoaDialogo"
            header="Informação">
            <h:form id="formularioDialogo">
                <p:dataTable emptyMessage="Nenhum Cliente encontrado"
                    value="#{pessoaBean.listaPessoas}" var="pessoa">
                    <p:column headerText="Nome">
                        <h:outputText value="#{pessoa.nome}" />
                    </p:column>

                    <p:column headerText="Celular">
                        <h:outputText value="#{pessoa.celular}" />
                    </p:column>

                    <p:column headerText="Peso">
                        <h:outputText value="#{pessoa.peso}" />
                    </p:column>

                    <p:column headerText="Altura">
                        <h:outputText value="#{pessoa.altura}" />
                    </p:column>

                    <p:column headerText="Pesquisar">
                        <p:commandButton value="Calcular imc"
                            actionListener="#{pessoaBean.calcularImc(pessoa)}"
                            oncomplete="PF('calcularImc').show();" update=":imc" />
                    </p:column>


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

        <p:dialog appendTo="@(body)" modal="true" resizable="false"
            closable="true" draggable="false" widgetVar="calcularImc"
            header="IMC">
            <h:form id="imc">
                <h:panelGrid columns="2">
                    <p:outputLabel value="IMC: " />
                    <p:inputText value="#{pessoaBean.pessoa.resultadoImc}" />
                </h:panelGrid>
            </h:form>
        </p:dialog>
1 resposta
solução!

Consegui mudando o nome da minha variavel na hora de setar eu tava pegando a variavel local e não global era isso o motivo de não setar meu imc? Deixei assim.

public Double calcularImc(Pessoa cliente) {
        Double aux = cliente.getPeso()
                / (cliente.getAltura() * clientegetAltura());
        pessoa.setResultadoImc(aux);
        System.out.println("Resultado: " + pessoa.getResultadoImc());
        return aux;
    }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software