(UIParamenter) + JSF

5 respostas
juniorsatanas

Pessoal gostaria de uma ajuda, não estou conseguindo trabalhar com a arvore de componentes jsf alguém poderia me falar que erro é este ?

meu codigo

package br.gov.nutec.mb;

import java.io.Serializable;
import br.gov.nutec.facade.MensalidadeFacade;
import br.gov.nutec.facade.MensalidadeFacadeImpl;
import br.gov.nutec.facade.PessoaFacade;
import br.gov.nutec.facade.PessoaFacadeImpl;
import br.gov.nutec.modelo.Pessoa;
import br.gov.nutec.modelo.Mensalidade;
import java.util.List;
import java.util.ArrayList;

import javax.xml.ws.Action;
import javax.el.ELContext;
import javax.el.ELResolver;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIParameter;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import javax.faces.validator.ValidatorException;
import javax.faces.component.html.HtmlSelectOneMenu;

public class MensalidadeMB implements Serializable {

    private static long serialVersionUID = 1L;

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public static void setSerialVersionUID(long aSerialVersionUID) {
        serialVersionUID = aSerialVersionUID;
    }

    //=========================== classes importadas e relacionadas===========================================//
    private Mensalidade mensalidade = new Mensalidade();
    private Long idMensalidade;
    
    private Pessoa pessoa = new Pessoa();
    private Long id;
    private Long idPessoa;

    private HtmlSelectOneMenu pessoaSelecionado;
    private Iterable<Pessoa> pessoas;
          
    public HtmlSelectOneMenu getPessoaSelecionado() { 
        return pessoaSelecionado;
    }
    
    private MensalidadeMB pagaMensaldiadeMB() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ELContext elContext = facesContext.getELContext();
        ELResolver resolver = facesContext.getApplication().getELResolver();
        Object c = resolver.getValue(elContext, null, "mensaldiadeMB");
        System.out.println(" >>>>>>>>>>>>>>>>>>>> PEGOU MENSALIDADE <<<<<<<<<<<<<<<<<<");
        return (MensalidadeMB) c;
    }
  
    //====================================fim para combo========================================//
    //=========================== classes importadas e relacionadas=================FIM=========//

    public MensalidadeMB() {
        System.out.println(" >>>>>>>>>>>>>>>>>>>> Contrutor do Mensalidade_MB <<<<<<<<<<<<<<<<<<");
        if (this.mensalidade == null) {
            this.mensalidade = new Mensalidade();
        }
    }
    private PessoaMB pegaPessoaMB() {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        ELContext elContext = facesContext.getELContext();
        ELResolver resolver = facesContext.getApplication().getELResolver();
        Object c = resolver.getValue(elContext, null, "pessoaMB");
        return (PessoaMB) c;
    }
 
    public List<SelectItem> GetpessoaSelecionado() { //G
        List<SelectItem> lista = new ArrayList<SelectItem>();
        PessoaMB mb = pegaPessoaMB();
        for (Pessoa p : mb.getPessoas()) {
            boolean add = lista.add(new SelectItem(p.getId().toString(), p.getNome()));
        }
        return lista;
    }

    public List<SelectItem> getPessoasParaComboBox() {
        List<SelectItem> lista = new ArrayList<SelectItem>();
             PessoaMB mb = pegaPessoaMB();
        for (Pessoa c : mb.getPessoas()) {
            lista.add(new SelectItem(c.getId().toString(), c.getNome()));
        }
        System.out.println(" >>>>>>>>>>>>>>>>>>>> PESSOA PARA COMBOX <<<<<<<<<<<<<<<<<<");
        return lista;

    }

public void escolhePessoa(ActionEvent event){
    UIParameter val = (UIParamenter) event.getComponent().findComponent("editId");

    Long id = Long.valueOf(val.getValue().toString());

     for (Pessoa p : this.pessoas)
         if (p.getId().equals(id)){
             this.pessoa = p;
             break;

         }
}

    //* *******************************FUNCOES BASICAS**********************************************************/

    public void salva(ActionEvent event) {
        PessoaFacade pessoaService = new PessoaFacadeImpl(); // instancia

        Long idpessoa = Long.parseLong(pessoaSelecionado.getValue().toString()); // passa de string para long

        Pessoa p = pessoaService.procura(idpessoa); // procura pessoa por id
System.out.println(" >>>>>>>>>>>>>>>>>>>> ID PEGO E : <<<<<<<<<<<<<<<<<<"+idpessoa);
        
        MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl(); // instancia mensalidade

        mensalidadeService.salva(this.getMensalidade());
        this.setMensalidade(new Mensalidade());
    }

//*****************************************************************************************************************//
    public String save() {
        MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
        mensalidadeService.salva(this.getMensalidade());
        this.setMensalidade(new Mensalidade());
        //mensalidade
        PessoaFacade pessoaService = new PessoaFacadeImpl();
        this.setPessoa(new Pessoa());
        return "cadastraSucesso";
    }
    public String delete() {
        MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
        this.getMensalidade().setIdMensalidade(getIdMensalidade());
        mensalidadeService.remove(this.getMensalidade());
        this.setMensalidade(new Mensalidade());
        return "removeSucesso";
    }

    public String merge() {
        MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
        mensalidadeService.atualiza(this.getMensalidade());
        this.setMensalidade(new Mensalidade());

        return "atualizaSucesso";
    }

    public String load() {
        MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
        this.setMensalidade(mensalidadeService.procura(this.getIdMensalidade()));

        return "pesquisaSucesso";
    }

    //* *******************************FUNCOES BASICAS*******FIM***************************************************/
     public void setPessoaSelecionado(HtmlSelectOneMenu pessoaSelecionado) { // set de pessoa
        this.pessoaSelecionado = pessoaSelecionado;
    }
    //get set para pessoa
    public List<Pessoa> getPessoas() {
        PessoaFacade pessoaService = new PessoaFacadeImpl();
        return pessoaService.lista();
    }
    // fim get set pessoa

    public String list() {
        MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
        this.setMensalidade(mensalidadeService.procura(this.getId()));
        return "pesquisaSucesso";
    }
    //get set para mensalidades
        public List<Mensalidade> getMensalidades(){
		MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl();
		return mensalidadeService.lista();
	}

    public Mensalidade getMensalidade() {
        return mensalidade;
    }

    public void setMensalidade(Mensalidade mensalidade) {
        this.mensalidade = mensalidade;
    }

    public Long getIdMensalidade() {
        return idMensalidade;
    }

    public void setIdMensalidade(Long idMensalidade) {
        this.idMensalidade = idMensalidade;
    }

   

    public Long getIdPessoa() {
        return idPessoa;
    }

    public void setIdPessoa(Long idPessoa) {
        this.idPessoa = idPessoa;
    }

    public Pessoa getPessoa() {
        return pessoa;
    }

    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

   

}

5 Respostas

MauNunes

E ai junior santada, tudo bem?
Dei uma olhada no seu código e aparentemente está correto. Mesmo assim coloquei como eu uso aqui. Da uma verifica e ve se está igual.

public void salvar(ActionEvent event) {

  UIComponent link = event.getComponent(); 
  UIParameter id = (UIParameter) link.findComponent("editId");
}

Repara que o seu método salvar existe um parâmetro ActionEvent event . Para que esse método funcione é preciso alterar a chamada do mesmo na sua página.
Se você reparar existem dois atributos nos componentes e
. Um é o actione outro é o actionListener.
O atributo action, funciona quando o método retorna uma String e não tem nenhum parâmetro.
Já o actionListener o método deve ser do tipo void e ter um parâmetros, nesse caso o ActionEvent event.

Outra coisa, da uma verificada nos id. Ve se o nome está correto e se não existe nenhum id com o mesmo nome.

Da uma verificada ai e ve se funciona. Depois posta aqui o resultado.

juniorsatanas

MauNunes Boa Tarde !

Vou Tentar aqui !
Obrigado !

juniorsatanas

no salvar ?

juniorsatanas

ficou assim:

public void salva(ActionEvent event) {
        PessoaFacade pessoaService = new PessoaFacadeImpl(); // instancia

        Long idpessoa = Long.parseLong(pessoaSelecionado.getValue().toString()); // passa de string para long

        Pessoa p = pessoaService.procura(idpessoa); // procura pessoa por id
        System.out.println(" >>>>>>>>>>>>>>>>>>>> ID PEGO E : <<<<<<<<<<<<<<<<<<"+idpessoa);
        
        MensalidadeFacade mensalidadeService = new MensalidadeFacadeImpl(); // instancia mensalidade

        mensalidadeService.salva(this.getMensalidade());
        this.setMensalidade(new Mensalidade());

//UIComponent link = event.getComponent();
//UIParameter id = (UIParameter) link.findComponent("editId");

    }

 Como ?
juniorsatanas

o formulario ta assim :

<?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:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:a4j="http://richfaces.org/a4j"
      xmlns:rich="http://richfaces.org/rich">
    <style type="text/css">
        .ecol1 { vertical-align: top; padding-right : 25px }
        .ecol2 { vertical-align: top; border-left: #ACBECE 1px solid; padding-left : 10px }
        .rich-calendar-tool-btn{
            font-family: Arial, Verdana;
        }
    </style>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <link rel="StyleSheet" type="text/css" href="../style/estilos.css" media="screen" />
    </head>
    <a4j:keepAlive beanName="pessoaMB" />
    <ui:composition template="/template/template.xhtml">
        <ui:define name="corpo">
            <rich:tabPanel switchType="ajax">
                <rich:tab label="Cadastro de Mensalidade">
                    <a4j:form>
                        <rich:messages />
                        <legend>Cadastro de Pessoa</legend>
                        <a4j:region id="regiaoAjax">
                            <a4j:status id="sts">
                                <f:facet name="start">
                                    <h:graphicImage value="/images/ajax-loader_1.gif" />
                                </f:facet>
                            </a4j:status>
                        </a4j:region>
                        <!-- INICIA FORMULARIO-->
                        <fieldset>
                            <h:panelGrid columns="2" id="inputs">
                                <h:outputLabel for="matricula" value="Digite a Matrícula: " />
                                <h:inputText id="matriuclaInput" value="#{pessoaMB.pessoa.matricula}"  styleClass="inputPesquisa" >
                                    <a4j:commandButton  value="Pesquisar" action="#{pessoaMB.pesquisaByMatricula}" styleClass="inputPesquisaBtn2" reRender="inputs,fisicas,pessoas,listaumensalidade,pessoaS,selpessoa,sm">
                                    </a4j:commandButton>
                                </h:inputText>
                              
                               <h:selectOneMenu binding="#{mensalidadeMB.pessoaSelecionado}" id="pessoaS">
                                    <f:selectItem itemValue="0" itemLabel="Selecione" id="selpessoa"/>
                                    <f:selectItems value="#{mensalidadeMB.pessoasParaComboBox}" id="sm"/>
                                </h:selectOneMenu>
                               
                                <h:outputLabel for="Data Pagamento.:" value="Data Pagamento.: "  />
                                <rich:calendar id="data_pag" value="#{mensalidadeMB.mensalidade.data_pag}">
                                    <a4j:support event="ondateselected" />
                                </rich:calendar>
                                <h:outputLabel for="valor" value="Valor.: ($)"/>
                                <h:inputText id="valor" value="#{mensalidadeMB.mensalidade.valor}" styleClass="edit" size="30">
                                </h:inputText>
                            </h:panelGrid>
                               |<a4j:commandButton value="Inserir" actionListener="#{mensalidadeMB.salva}" status="sts" reRender="inputs,fisicas,pessoas,mensalidade,mensalidades,pessoaS,selpessoa,sm" styleClass="botoes"/>
                            |<a4j:commandButton value="Deletar" action="#{mensalidadeMB.delete}" status="sts" reRender="inputs,fisicas,pessoas,mensalidade" styleClass="botoes"/>
                            |<a4j:commandButton value="Modificar" action="#{mensalidadeMB.merge}" status="sts" reRender="inputs,fisicas,pessoas,mensalidade" styleClass="botoes"/>
                            |<a4j:commandButton value="Listar" action="#{mensalidadeMB.list}" status="sts" reRender="inputs,fisicas,pessoas,mensalidade" styleClass="botoes"/>
                            |<a4j:commandButton value="Relatório" action="toCadastraMensalidade" status="sts" reRender="inputs,fisicas,pessoas,mensalidade" styleClass="botoes"/>
                            |<a4j:commandButton value="Menslidades" action="toCadastraMensalidade" immediate="true" styleClass="botoes"/>
                            |<a4j:commandButton value="Voltar" immediate="true" action="toIndex" styleClass="botoes"/>|
                        </fieldset>

                        <rich:messages />
                        <fieldset><legend>Atualização de Dados</legend>
                            <f:subview id="listauser">
                                <rich:dataTable value="#{pessoaMB.pessoas}" var="pessoa" rows="10" id="pessoas" width="100%" cellspacing="0" cellpadding="0" border="5">
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="MATRÍCULA" />
                                        </f:facet>
                                        <h:outputText value="#{pessoa.matricula}" />
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="NOME" />
                                        </f:facet>
                                        <h:outputText value="#{pessoa.nome}" />
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="STATUS" />
                                        </f:facet>
                                        <h:outputText value="#{pessoa.status}" />
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="Excluir"/>
                                        </f:facet>
                                        <a4j:commandLink action="#{pessoaMB.delete}" status="sts" reRender="inputs,fisicas,pessoas" >
                                            <h:outputText value="Excluir"/>
                                            <f:setPropertyActionListener value="#{pessoa.id}" target="#{pessoaMB.id}" /> <!-- pega  o id -->
                                        </a4j:commandLink>
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="Editar"/>
                                        </f:facet>
                                        <a4j:commandLink reRender="inputs,fisicas,pessoas" >
                                            <h:outputText value="Editar"/>
                                            <f:setPropertyActionListener value="#{pessoa}" target="#{pessoaMB.pessoa}" />
                                        </a4j:commandLink>
                                    </h:column>
                                    <f:facet name="footer">
                                        <rich:datascroller />
                                    </f:facet>
                                </rich:dataTable>
                            </f:subview>
                            <f:subview id="listaumensalidade">
                                <rich:dataTable value="#{mensalidadeMB.mensalidades}" var="mensalidade" rows="10" id="mensalidades" width="100%" cellspacing="0" cellpadding="0" border="5">
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="CÓDIGO" />
                                        </f:facet>
                                        <h:outputText value="#{mensalidade.idMensalidade}" />
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="DATA/PAGAMENTO" />
                                        </f:facet>
                                        <h:outputText value="#{mensalidade.data_pag}" />
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="VALOR" />
                                        </f:facet>
                                        <h:outputText value="#{mensalidade.valor}" />
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="Excluir"/>
                                        </f:facet>
                                        <a4j:commandLink action="#{mensalidadeMB.delete}" status="sts" reRender="inputs,mensalidade,mensalidades" >
                                            <h:outputText value="Excluir"/>
                                            <f:setPropertyActionListener value="#{mensalidade.idMensalidade}" target="#{mensalidadeMB.idMensalidade}" /> <!-- pega  o id -->
                                        </a4j:commandLink>
                                    </h:column>
                                    <h:column>
                                        <f:facet name="header">
                                            <h:outputText value="Editar"/>
                                        </f:facet>
                                        <a4j:commandLink reRender="inputs,mensalidade,mensalidades" >
                                            <h:outputText value="Editar"/>
                                            <f:setPropertyActionListener value="#{mensalidade}" target="#{mesalidadeMB.mensalidade}" />
                                        </a4j:commandLink>
                                    </h:column>
                                    <f:facet name="footer">
                                        <rich:datascroller />
                                    </f:facet>
                                </rich:dataTable>
                            </f:subview>
                        </fieldset>
                    </a4j:form>
                </rich:tab>
<!-- ****************************************************************** TAB LISTA DE PESSOAS**************************************************-->
                <rich:tab label="Lista de Pessoas">
                    <f:subview id="listauser">
                        <a4j:form>
                            <rich:messages />
                            <fieldset>
                                <a4j:region id="regiaoAjax">
                                    <a4j:status id="sts">
                                        <f:facet name="start">
                                            <h:graphicImage value="/images/ajax-loader_1.gif" />
                                        </f:facet>
                                    </a4j:status>
                                </a4j:region>
                                <h:panelGrid columns="2" id="inputs">
                                    <h:outputLabel for="nomeLabel" value="Digite o Nome: " />
                                    <h:inputText id="nomeInput" value="#{pessoaMB.pessoa.nome}" style=" width : 250px;"  styleClass="inputPesquisa">
                                        <a4j:commandButton value="Pesquisar" action="#{pessoaMB.pesquisaByNome}" reRender="pessoas">
                                        </a4j:commandButton>
                                    </h:inputText>
                                </h:panelGrid>
                            </fieldset>
                            <rich:dataTable value="#{pessoaMB.pessoas}" var="pessoa" rows="10" id="pessoas" width="100%" cellspacing="0" cellpadding="0" border="1">
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="MATRÍCULA" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.matricula}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="NOME" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.nome}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="E-MAIL" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.email}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="CPF" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.cpf}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="DATA NASC." />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.data_nasc}">
                                        <f:convertDateTime pattern="dd/MM/yyyy" />
                                    </h:outputText>
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="CELULAR" />
                                    </f:facet>
                                    <h:outputText value="#{pessoaMB.pessoa.celular}" />
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="Excluir"/>
                                    </f:facet>
                                    <a4j:commandLink action="#{pessoaMB.delete}" status="sts" reRender="inputs,fisicas,pessoas" >
                                        <h:outputText value="Excluir"/>
                                        <f:setPropertyActionListener value="#{pessoa.id}" target="#{pessoaMB.id}" />
                                    </a4j:commandLink>
                                </h:column>
                                <h:column>
                                    <f:facet name="header">
                                        <h:outputText value="Editar"/>
                                    </f:facet>
                                    <a4j:commandLink reRender="inputs,fisicas,pessoas" >
                                        <h:outputText value="Editar"/>
                                        <f:setPropertyActionListener value="#{pessoa}" target="#{pessoaMB.pessoa}" />
                                    </a4j:commandLink>
                                </h:column>

                                <f:facet name="footer">
                                    <rich:datascroller />
                                </f:facet>
                            </rich:dataTable>
                        </a4j:form>
                    </f:subview>
                </rich:tab>
                <!-- ******************************FIM************************************ TAB LISTA DE PESSOAS********************************************-->
                <rich:tab label="Filtros">
                </rich:tab>
                <rich:tab label="Relatórios">
                </rich:tab>
            </rich:tabPanel>
        </ui:define>
    </ui:composition>
</html>
Criado 29 de março de 2010
Ultima resposta 29 de mar. de 2010
Respostas 5
Participantes 2