<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<ui:composition 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:c="http://java.sun.com/jstl/core"
xmlns:t="http://myfaces.apache.org/tomahawk"
xmlns:s="http://jboss.com/products/seam/taglib"
xmlns:rich="http://richfaces.org/rich"
template="/templates/template.xhtml">
<ui:define name="corpo">
<h:form>
<a4j:commandLink value="Novo" action="#{livroController.novo}">
</a4j:commandLink>
<h:messages infoStyle="color: green" />
<div align="center"><rich:tabPanel width="60%" height="100">
<rich:tab align="center" label="Livro">
<table width="100%" align="center">
<tr>
<td>Autor:
<div class="campoObrigatorio">*</div>
</td>
<td><h:selectOneMenu
value="#{AutorController.autor.nome}" size="80" /></td>
</tr>
<tr>
<td>Titulo:
<div class="campoObrigatorio">*</div>
</td>
<td><h:inputText
value="#{livroController.filtro.titulo}" size="80" /></td>
</tr>
</table>
<table align="center">
<tr>
<td><a4j:commandButton styleClass="buttonAdicionar"
value="Buscar" action="#{livroController.filtrar}" >
</a4j:commandButton></td>
</tr>
</table>
</rich:tab>
</rich:tabPanel></div>
<br />
<a4j:outputPanel ajaxRendered="true">
<rich:dataTable align="center" width="60%" id="listFinanciamentos"
rows="10" onRowMouseOver="this.style.backgroundColor='#CCCCCC'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.rowBackgroundColor}'"
rowClasses="odd-row,even-row" rendered="true" columnClasses="col"
var="row">
<f:facet name="header">
<rich:columnGroup>
<rich:column style="text-align:center">
<h:outputText value="Tipo" />
</rich:column>
</rich:columnGroup>
</f:facet>
</rich:dataTable>
<rich:dataTable align="center" width="60%" id="tabela" rows="10"
onRowMouseOver="this.style.backgroundColor='#CCCCCC'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.rowBackgroundColor}'"
rowClasses="odd-row,even-row" rendered="true" columnClasses="col"
var="row" value="#{livroController.livros}">
<f:facet name="header">
<rich:columnGroup>
<rich:column style="text-align:center">
<h:outputText styleClass="headerText" value="Título" />
</rich:column>
<rich:column style="text-align:center">
<h:outputText styleClass="headerText" value="Cativo" />
</rich:column>
<rich:column style="text-align:center">
<h:outputText styleClass="headerText" value="Emprestímo" />
</rich:column>
<rich:column style="text-align:center">
<h:outputText styleClass="headerText" value="Disponível" />
</rich:column>
<rich:column/>
</rich:columnGroup>
</f:facet>
<rich:column style="text-align:center">
<h:outputText value="#{row.titulo}" />
</rich:column>
<rich:column style="text-align:center">
<h:outputText value="#{row.cativo}" />
</rich:column>
<rich:column style="text-align:center">
<h:outputText value="#{row.emprestimo}" />
</rich:column>
<rich:column style="text-align:center">
<h:outputText value="#{row.disponivel}" />
</rich:column>
<rich:column>
<h:commandLink id="commandEditar" styleClass="buttonEditar"
action="#{livroController.editar}" value="">
<f:setPropertyActionListener value="#{row}"
target="#{livroController.tipo}" />
</h:commandLink>
</rich:column>
<f:facet name="footer">
<rich:columnGroup>
<rich:column style="text-align:center" colspan="8">
<rich:datascroller for="tabela" pageIndexVar="pageIndex"
pagesVar="pages" id="sc2" maxPages="8" align="right">
<f:facet name="pages" styleClass="pages">
<h:outputText value="#{pageIndex} / #{pages}" />
</f:facet>
<f:facet name="next">
<h:outputText value=">" />
</f:facet>
<f:facet name="next_disabled">
<h:outputText value=">" />
</f:facet>
<f:facet name="previous">
<h:outputText value="<" />
</f:facet>
<f:facet name="previous_disabled">
<h:outputText value="<" />
</f:facet>
</rich:datascroller>
<div align="right"><t:dataScroller id="_scroll"
for="tabela" rowsCountVar="rowsCount"
firstRowIndexVar="firstRowIndex" lastRowIndexVar="lastRowIndex"
rendered="true">
</t:dataScroller></div>
</rich:column>
</rich:columnGroup>
</f:facet>
</rich:dataTable>
</a4j:outputPanel>
</h:form>
</ui:define>
</ui:composition>
package controller;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Resource;
import javax.faces.event.ActionEvent;
import javax.faces.model.SelectItem;
import model.Genero;
import model.Livro;
import model.Tipo;
import org.springframework.stereotype.Component;
import dao.CddDAO;
import dao.GeneroDAO;
import dao.IsbnDAO;
import dao.LivroDAO;
import dao.SubTituloDAO;
import dao.TipoDAO;
import dao.TituloDAO;
@Component
public class LivroController implements Serializable {
private static final long serialVersionUID = 1L;
Livro livro,livroSelecionado,filtro;
List<Livro> livros;
@Resource
LivroDAO dao;
List<SelectItem> generos;
@Resource
GeneroDAO generoDAO;
List<SelectItem> tipos;
@Resource
TipoDAO tipoDAO;
static String PAGINA_LISTAGEM = "listarLivros";
void limpar(){
livro = new Livro();
filtro = new Livro();
livroSelecionado = new Livro();
livros = new ArrayList<Livro>();
generos = new ArrayList<SelectItem>();
tipos = new ArrayList<SelectItem>();
}
public LivroController(){
limpar();
}
public String novo(){
limpar();
return "cadastrarLivro";
}
public Livro getLivro() {return livro;}
public void setLivro(Livro livro) {this.livro = livro;}
public List<Livro> getLivros() {
if(livros.size()==0) livros = dao.todos("ace_tit");
return livros;
}
public void setLivros(List<Livro> livros) {this.livros = livros;}
public List<SelectItem> getGeneros() {
if(generos.size()==0){
for(Genero g :generoDAO.todos("gen_dsc")){
generos.add(new SelectItem(g,g.getDescricao()));
}
}
return generos;
}
public void setGeneros(List<SelectItem> generos) {
this.generos = generos;
}
public List<SelectItem> getTipos() {
if(tipos.size()==0){
for(Tipo t : tipoDAO.todos("tac_dsc")){
tipos.add(new SelectItem(t,t.getNome()));
}
}
return tipos;
}
public void setTipos(List<SelectItem> tipos) {this.tipos = tipos;}
public Livro getLivroSelecionado() {
return livroSelecionado;
}
public Livro getFiltro() {
return filtro;
}
public void setFiltro(Livro filtro) {
this.filtro = filtro;
}
public void setLivroSelecionado(Livro livroSelecionado) {this.livroSelecionado = livroSelecionado;}
public String listar(){
limpar();
return PAGINA_LISTAGEM;
}
public void filtrar(){
livros = dao.findByExample(filtro);
}
public String mostrarTituloComTipo(Livro livro){
StringBuffer titulo = new StringBuffer(livro.getTitulo());
return titulo.append("(").append(livro.getTipo().getNome()).append(")").toString();
}
public void limpaLivroSelecionado(ActionEvent evt){
livroSelecionado = new Livro();
}
public String formataSinopse(String sinopse){
return sinopse.isEmpty() || sinopse==null ? "Não Informada" : sinopse;
}
}
package model;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
@Entity
@Table(name="tab_ace")
public class Livro implements Serializable {
@Id
@Column(name="ace_isn")
Long id;
@Column(name="ace_tit")
String titulo;
@Column(name="ace_sub_tit")
String subtitulo;
@Column(name="ace_not")
String sinopse;
@Column(name="ace_isbn")
String isbn;
@Column(name="ace_cdd_cdu")
String cdd;
@Column(name="ace_cut")
String cutter;
@Column(name="ace_col_ser")
String colecao;
@Column(name="ace_qtd_cat")
Integer cativo;
@Column(name="ace_qtd_emp")
Integer emprestimo;
@Column(name="ace_qtd_dis")
Integer disponivel;
@ManyToOne
@JoinColumn(name="gen_isn")
Genero genero;
@ManyToOne
@JoinColumn(name="tac_isn")
Tipo tipo;
public Long getId() {return id;}
public void setId(Long id) {this.id = id;}
public String getTitulo() {return titulo;}
public void setTitulo(String titulo) {this.titulo = titulo;}
public String getSubtitulo() {return subtitulo; }
public void setSubtitulo(String subtitulo) {this.subtitulo = subtitulo; }
public String getSinopse() {return sinopse;}
public void setSinopse(String sinopse) {this.sinopse = sinopse;}
public String getIsbn() {return isbn;}
public void setIsbn(String isbn) {this.isbn = isbn;}
public String getCdd() {return cdd;}
public void setCdd(String cdd) {this.cdd = cdd;}
public String getCutter() {return cutter;}
public void setCutter(String cutter) {this.cutter = cutter;}
public String getColecao() {return colecao;}
public void setColecao(String colecao) {this.colecao = colecao;}
public Genero getGenero() {return genero;}
public void setGenero(Genero genero) {this.genero = genero;}
public Tipo getTipo() {return tipo;}
public void setTipo(Tipo tipo) {this.tipo = tipo;}
public Integer getCativo() {
return cativo;
}
public void setCativo(Integer cativo) {
this.cativo = cativo;
}
public Integer getEmprestimo() {
return emprestimo;
}
public void setEmprestimo(Integer emprestimo) {
this.emprestimo = emprestimo;
}
public Integer getDisponivel() {
return disponivel;
}
public void setDisponivel(Integer disponivel) {
this.disponivel = disponivel;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Livro other = (Livro) obj;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
return true;
}
}
o erro dado é esse :
[ SEVERE: Error Rendering View[/paginas/livro/listagem.xhtml]
ajudinha aí???