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.