Jsf

1 resposta
F

Sou novo com JSF estou tentando atravez de um menu na minha rich table abrir um form com os dados do item selecionado só que o form aparece com os dados em branco.

Alguem pode me ajudar.

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>

<style type="text/css">
    body {
        font-family: verdana;
        font-size: 9pt;
        padding: 30px;
    }
    .titulo{
        background-color:blue;
        color: #FFF;
    }

    .par{
        background-color: #d6eef8 ;
    }

    .impar{
        background-color: #9edef7;
    }

    a:link {
        text-decoration: none;

    }
    a:visited {
        text-decoration: none;

    }
    a:hover {
        text-decoration: none;
    }
    a:active {
        text-decoration: none;
    }
</style>

<f:view>
    <rich:panel id="painel_principal">

        <%-- Definição de cabeçalho do painel --%>
        <f:facet name="header" >
            <h:outputText  value="CITE Controle Interno Transporte Escolar"
                           style="font-size: 14pt; font-weight: bold;"/>

        </f:facet>        

        <h:outputText value="Manutenção de Carros"
                      style="font-size: 12pt; font-weight: bold;"/>

        <br/><br/>

        <a4j:htmlCommandLink id="cadastrar" style="font-size: 10pt; font-weight: bold;">
            <h:graphicImage alt="Clique para cadastrar um novo carro"
                            value="imagens/icone_cliente_mini.jpg"
                            style="border: none; pading: 10px;"></h:graphicImage>

            <rich:componentControl for="painel_cadastro" operation="show"
                                   event="onclick" attachTo="cadastrar"/>

        </a4j:htmlCommandLink><br/>

        <h:outputText value="Novo Carro" style="font-size: 10pt; font-weight: bold;"/>


        <br/><br/>
        <br/><br/>

        <a4j:form id="listagemcarros" rendered="true">

            <rich:panel id="paineltabela" rendered="#{!ManterCarro.listaVazia}" >

                <f:facet name="header" >

                    <h:outputText value="Carros"
                                  style="font-size: 13pt; font-weight: bold;"/>

                </f:facet>

                <h:outputText value="Relação de Carros cadastrados"
                              style="font-size: 12pt; font-weight: bold;"/>

                <br/><br/>

                <h:outputText value="Utilize o menu de ação da tabela para
                              realizar operações um determinado Carro"
                              style="font-size: 9pt;"/>

                <br/><br/>


                <rich:datascroller id="ds" align="center" for="dt"
                                   maxPages="20" reRender="listagemcarros"
                                   fastControls="show" fastStep="20" stepControls="show"
                                   boundaryControls="show"/>


                <rich:dataTable id="dt" width="95%" border="0"
                                columnsWidth="5%, 10%, 10%, 10%, 10%, 10%, 20%, 20%"
                                value= "#{ManterCarro.dados}" var="item"
                                headerClass="titulo" rowClasses="par,impar"
                                rows="8">

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Menu"/>
                        </f:facet>

                        <rich:dropDownMenu value="Ação" direction="bottom-right">

                            <rich:menuItem submitMode="none">
                                <a4j:commandLink value="Excluir Carro" id="excluir"
                                                 actionListener="#{ManterCarro.excluir}"
                                                 reRender="listagemcarros"
                                                 onclick="confirmar()">

                                    <f:param name="itemdel" id="itemdel" value="#{item}"/>

                                </a4j:commandLink>
                            </rich:menuItem>

                            <rich:menuItem submitMode="none">
                                <a4j:commandLink value="Alterar Carro" id="alterar"
                                                 actionListener="#{ManterCarro.recebeCarro}"
                                                 reRender="listagemcarros">

                                    <f:param name="itemalt" id="itemalt" value="#{item}"/>


                                    <rich:componentControl for="painel_alterar" operation="show"
                                                           event="onclick" attachTo="alterar"/>

                                </a4j:commandLink>
                            </rich:menuItem>

                            <rich:menuItem submitMode="none">
                                <a4j:commandLink value="Gerencial"/>
                            </rich:menuItem>

                        </rich:dropDownMenu>


                    </rich:column>

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Placa"/>
                        </f:facet>
                        <h:outputText value="#{item.placa}"/>
                    </rich:column>

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Marca"/>
                        </f:facet>
                        <h:outputText value="#{item.marca}"/>
                    </rich:column>

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Modelo"/>
                        </f:facet>
                        <h:outputText value="#{item.modelo}"/>
                    </rich:column>

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Ano de Fabricação"/>
                        </f:facet>
                        <h:outputText value="#{item.anoFabric}">
                        </h:outputText>
                    </rich:column>

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Ano do Modelo"/>
                        </f:facet>
                        <h:outputText value="#{item.anoModelo}">
                        </h:outputText>
                    </rich:column>

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Chassi"/>
                        </f:facet>
                        <h:outputText value="#{item.chassi}">
                        </h:outputText>
                    </rich:column>

                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="Renavan"/>
                        </f:facet>
                        <h:outputText value="#{item.renavan}">
                        </h:outputText>
                    </rich:column>


                </rich:dataTable>


            </rich:panel>

            <br/><br/>
            <h:messages style="font-family:Verdana; font-size: 11px; color: #034FA7;"/>

        </a4j:form>

    </rich:panel>

    <rich:modalPanel id="painel_cadastro" width="400" autosized="true" resizeable="false" rendered="true">

        <f:facet name="header">
            <h:panelGroup>
                <h:outputText value="Cadastrar Carro"
                              style="font-size: 12pt; font-weight: bold;"/>
            </h:panelGroup>
        </f:facet>

        <f:facet name="controls">
            <h:panelGroup>
                <h:graphicImage value="/imagens/close.png" id="fechar"/>

                <rich:componentControl for="painel_cadastro" attachTo="fechar"
                                       operation="hide" event="onclick"/>

            </h:panelGroup>
        </f:facet>

        <a4j:form id="formulario_cadastrar">

            <h:panelGrid columns="2" style="padding: 5px; font-size: 9pt;">

                <h:outputLabel value="Placa: " for="placa"/>
                <h:inputText id="placa" size="30" maxlength="7"  value="#{ManterCarro.carro.placa}"/>

                <h:outputLabel value="Marca: " for="marca"/>
                <h:inputText id="marca" size="30" maxlength="30" value="#{ManterCarro.carro.marca}"/>

                <h:outputLabel value="Modelo: " for="modelo"/>
                <h:inputText id="modelo" size="30" maxlength="30" value="#{ManterCarro.carro.modelo}"/>

                <h:outputLabel value="Ano de Fabricação: " for="anofabric"/>
                <h:inputText id="anofabrico" size="30" maxlength="4" value="#{ManterCarro.carro.anoFabric}"/>

                <h:outputLabel value="Ano do Modelo: " for="anomodelo"/>
                <h:inputText id="anomodelo" size="30" maxlength="4" value="#{ManterCarro.carro.anoModelo}"/>

                <h:outputLabel value="Chassi: " for="chassi"/>
                <h:inputText id="chassi" size="30" maxlength="17" value="#{ManterCarro.carro.chassi}"/>

                <h:outputLabel value="Renavan: " for="renavan"/>
                <h:inputText id="renevan" size="30" maxlength="9" value="#{ManterCarro.carro.renavan}"/>

            </h:panelGrid>

            <br/><br/>

            <a4j:commandButton value="Cadastrar Carro" action="#{ManterCarro.cadastrar}"
                               reRender="formulario_cadastrar, listagemcarros"/>

            <a4j:commandButton value="Apagar" id="btn_apagar" style="margin-left: 5px;"
                               action="#{ManterCarro.limpar}" reRender="formulario_cadastrar"/>

            <br/><br/>
            <h:messages style="font-family:Verdana; font-size: 11px; color: #034FA7;"/>

        </a4j:form>

    </rich:modalPanel>

    <rich:modalPanel id="painel_alterar" width="400" autosized="true" resizeable="false" rendered="true">

        <f:facet name="header">
            <h:panelGroup>
                <h:outputText value="Alterar Carro"
                              style="font-size: 12pt; font-weight: bold;"/>
            </h:panelGroup>
        </f:facet>

        <f:facet name="controls">
            <h:panelGroup>
                <h:graphicImage value="/imagens/close.png" id="fechar1"/>

                <rich:componentControl for="painel_alterar" attachTo="fechar1"
                                       operation="hide" event="onclick"/>

            </h:panelGroup>
        </f:facet>

        <a4j:form id="formulario_alterar">

            <h:panelGrid columns="2" style="padding: 5px; font-size: 9pt;">

                <h:outputLabel value="Placa: " for="placa"/>
                <h:inputText id="placa" size="30" maxlength="7" value="#{ManterCarro.carro.placa}"/>

                <h:outputLabel value="Marca: " for="marca"/>
                <h:inputText id="marca" size="30" maxlength="30" value="#{ManterCarro.carro.marca}"/>

                <h:outputLabel value="Modelo: " for="modelo"/>
                <h:inputText id="modelo" size="30" maxlength="30" value="#{ManterCarro.carro.modelo}"/>

                <h:outputLabel value="Ano de Fabricação: " for="anofabric"/>
                <h:inputText id="anofabrico" size="30" maxlength="4" value="#{ManterCarro.carro.anoFabric}"/>

                <h:outputLabel value="Ano do Modelo: " for="anomodelo"/>
                <h:inputText id="anomodelo" size="30" maxlength="4" value="#{ManterCarro.carro.anoModelo}"/>

                <h:outputLabel value="Chassi: " for="chassi"/>
                <h:inputText id="chassi" size="30" maxlength="17" value="#{ManterCarro.carro.chassi}"/>

                <h:outputLabel value="Renavan: " for="renavan"/>
                <h:inputText id="renevan" size="30" maxlength="9" value="#{ManterCarro.carro.renavan}"/>
                
            </h:panelGrid>

            <br/><br/>

            <a4j:commandButton id="btnalterar" value="Alterar Carro" action="#{ManterCarro.alterar}"
                               reRender="listagemcarros">

                <rich:componentControl for="painel_alterar" attachTo="btnalterar"
                                       operation="hide" event="onclick" rendered="listagemcarros"/>

            </a4j:commandButton>

            <br/><br/>
            <h:messages  style="font-family:Verdana; font-size: 11px; color: #034FA7;"/>

        </a4j:form>

    </rich:modalPanel>

    <br/><br/>
    <h:messages style="font-family:Verdana; font-size: 11px; color: #034FA7;"/>
</f:view>

<script language="javascript">

    function confirmar(){

        if(window.confirm("Deseja realmente excluir este carro?")){
            return true;
        }
        else{
            return false;
        }

    }

</script>
package control;

import java.util.*;
import modelo.Carro;
import persistence.CarroDao;

import javax.faces.application.FacesMessage;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

public class ManterCarro {

    private Carro carro;    
    private List<Carro> dados = new ArrayList();
    private boolean listaVazia = true;
    private CarroDao cd = new CarroDao();

    public ManterCarro() {

        carro = new Carro();        
        try {            
            listaVazia = (cd.listarAtivo().isEmpty()) ? true : false;            
        } catch (Exception ex) {
            ex.printStackTrace();
        }

    }

    public CarroDao getCd() {
        return cd;
    }

    public void setCd(CarroDao cd) {
        this.cd = cd;
    }

    public Carro getCarro() {
        return carro;
    }

    public void setCarro(Carro carro) {
        this.carro = carro;
    }

    public List<Carro> getDados() {

        try {
            if (cd.listarAtivo().isEmpty()) {
                listaVazia = true;                
            } else {
                listaVazia = false;
                dados = cd.listarAtivo();                
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return dados;
    }

    public void setDados(List<Carro> dados) {
        this.dados = dados;
    }

    public boolean isListaVazia() {
        return listaVazia;
    }

    public void setListaVazia(boolean listaVazia) {
        this.listaVazia = listaVazia;
    }

    public void cadastrar() {

        FacesContext context = FacesContext.getCurrentInstance();
        String mensagem = "";

        try {
            carro.setAtivo(true);
            cd.salvar(carro);            
            dados.add(carro);
            carro = new Carro();
            listaVazia = false;

            mensagem = "Carro cadastrado com sucesso!";
            FacesMessage message = new FacesMessage(mensagem);
            context.addMessage("formulario_cadastrar", message);

        } catch (Exception exp) {

            mensagem = "Erro: " + exp.getMessage();
            FacesMessage message = new FacesMessage(mensagem);
            context.addMessage("formulario_cadastrar", message);

        }

    }

    public void limpar() {
        carro = new Carro();

    }   

    public void excluir(ActionEvent event) throws Exception {
        
        UIParameter parameter = (UIParameter) event.getComponent().
                findComponent("itemdel");

        setCarro((Carro) parameter.getValue());

        try {
                        
            carro.setAtivo(false);
            dados.remove(carro);
            cd.alterar(carro);
            
            if (dados.isEmpty())
                listaVazia = true;

        } catch (Exception e) {            
            e.printStackTrace();
        }

    }

    public Carro recebeCarro(ActionEvent event){

        FacesContext context = FacesContext.getCurrentInstance();
        String mensagem = "";

        UIParameter parameter = (UIParameter) event.getComponent().
                findComponent("itemalt");
        carro = new Carro();
        setCarro((Carro) parameter.getValue());

         mensagem = " - Obter -  " + carro.getPlaca() + " - " + carro.isAtivo();
         FacesMessage message = new FacesMessage(mensagem);
         context.addMessage("formulario_alterar", message);
         return carro;
    }

    public void alterar(){

        FacesContext context = FacesContext.getCurrentInstance();
        String mensagem = "";

         mensagem = " - Teste -  " + carro.getPlaca();
         FacesMessage message = new FacesMessage(mensagem);
         context.addMessage("formulario_alterar", message);

    }
}

Abraços.

1 Resposta

juniorsatanas

Andre tudo bom ?

public CarroDao getCd() {  
        return cd;  
    }  
  
    public void setCd(CarroDao cd) {  
        this.cd = cd;  
    }

Comenta um pouco das especificacoes do teu Proejto… para eu entender do que se tratata !
Se possivel grude aqui algumas imagens dele ! das telas !

Valeu…

Criado 25 de abril de 2010
Ultima resposta 25 de abr. de 2010
Respostas 1
Participantes 2