>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Opção de Atualizar do JSF não roda


Boa tarde, eu criei um Crud baseado no curso de JSF, segui todos os passos, as opções de Consulta, adição e delete funcionam perfeitamente porém quando eu tento atualizar os registros no banco de dados ocorre um erro, e não sei o que pode estar acontecendo, já vi milhões de vezes o código para ver se tinha algo diferente porém não tem, o apache informa que quando ele tenta atualizar os campos acontece isso aqui:


"dez 03, 2015 4:40:50 PM com.sun.faces.renderkit.html_basic.HtmlBasicRenderer getForComponent
ADVERTÊNCIA: Não foi possível encontrar o componente com a ID nomeLivro na exibição.
dez 03, 2015 4:40:50 PM com.sun.faces.renderkit.html_basic.HtmlBasicRenderer getForComponent
ADVERTÊNCIA: Não foi possível encontrar o componente com a ID data_pub na exibição.
dez 03, 2015 4:40:50 PM com.sun.faces.renderkit.html_basic.HtmlBasicRenderer getForComponent
ADVERTÊNCIA: Não foi possível encontrar o componente com a ID assunto na exibição.
dez 03, 2015 4:40:50 PM com.sun.faces.renderkit.html_basic.HtmlBasicRenderer getForComponent
ADVERTÊNCIA: Não foi possível encontrar o componente com a ID livroStatus na exibição."


Pelo que eu entendi é um problema de não localização dos campos, mas não sei como corrigir isso, ele pega os dados e joga na tela, como deveria ser, mas quando clico no botão para confirmar a edição dos dados aparece esse erro.

----------------------
Minha Página de Editar é essa aqui:



xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">


Livro - Manter Dados









Controle de Livros - Atualizar









































---------------------------------
meu Bean é esse aqui:

package Bean;

import java.io.FileOutputStream;
import java.io.IOException;
import java.sql.SQLException;
import java.util.List;

import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfWriter;

import Biblioteca.Livro;
import DAO.LivroDAOImpl;
import DAO.relatorioIMPL;


@ManagedBean(name="livroBean")
@SessionScoped
public class LivroBean {

private Livro liv = new Livro();
private DataModel listLivro;


public String imprimePDF(){

relatorioIMPL rl = new relatorioIMPL();

rl.imprimirPDFLivro(listLivro);

return null;
}

public String atualizaLivro(){
String retorno="erro";

try{
LivroDAOImpl ldao = new LivroDAOImpl();
if(ldao.atualizarLivro(liv)){
retorno = "livroRelatorio";
}
}catch(Exception ex){

}
return retorno;
}


public String apagar(){
String retorno="erro";

try{
LivroDAOImpl ldao = new LivroDAOImpl();
if(ldao.remover(liv)){
retorno = "livroRelatorio";
}
}catch(Exception ex){

}
return retorno;
}


public DataModel getListLivro(){
LivroDAOImpl livdao = new LivroDAOImpl();
try {
List lista = livdao.pesquisaLivro();
listLivro = new ListDataModel(lista);
} catch (SQLException e) {
e.printStackTrace();
}
return listLivro;
}


public String adicionaLivro(){
String retorno="erro";

try{
LivroDAOImpl ldao = new LivroDAOImpl();
if(ldao.adicionarLivro(liv)){
retorno = "livroRelatorio";
}
}catch(Exception ex){

}
return retorno;
}

public void selecionarReg(){
this.liv = listLivro.getRowData();
}

public void novo(){
this.liv = new Livro();
}

public void setListLivro(DataModel listLivro) {
this.listLivro = listLivro;
}

public Livro getLiv() {
return liv;
}

public void setLiv(Livro liv) {
this.liv = liv;
}
}
----------------------------------------
Minha DAO é essa aqui

package DAO;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import Biblioteca.Livro;
import Interfaces.LivroDAO;

public class LivroDAOImpl implements LivroDAO {

Connection con;

public LivroDAOImpl(){
GenericDAOImpl gDAO = new GenericDAOImpl();
con = gDAO.getConnection();
}

@Override
public boolean adicionarLivro(Livro e) throws SQLException {

String sql = ("INSERT INTO livro(CodLivro, isbn, nomelivro, datapub, nomeautor, nomeeditora, assunto, status, descricao) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, e.getCodLivro());
ps.setString(2, e.getIsbn());
ps.setString(3, e.getNomeLivro());
ps.setString(4, e.getDataPub());
ps.setString(5, e.getNomeAutor());
ps.setString(6, e.getNomeEditora());
ps.setString(7, e.getAssunto());
ps.setString(8, e.getStatus());
ps.setString(9, e.getDescricao());

if(ps.executeUpdate()>0){
return true;
} else{
return false;
}


}

@Override
public List pesquisaLivro() throws SQLException {
ArrayList listaLivro = new ArrayList();

try
{
String sql = ("SELECT * FROM livro ORDER BY nomeLivro ASC");
PreparedStatement ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();

while(rs.next())
{
Livro a = new Livro();
a.setCodLivro(rs.getInt("codLivro"));
a.setNomeLivro(rs.getString("nomeLivro"));
a.setIsbn(rs.getString("isbn"));
a.setDataPub(rs.getString("dataPub"));
a.setNomeAutor(rs.getString("nomeAutor"));
a.setNomeEditora(rs.getString("nomeEditora"));
a.setAssunto(rs.getString("assunto"));
a.setStatus(rs.getString("status"));
a.setDescricao(rs.getString("descricao"));
listaLivro.add(a);
}
ps.close();
rs.close();
}
catch(SQLException e)
{
e.printStackTrace();
}
return listaLivro;
}


@Override
public boolean remover(Livro l) throws SQLException {

String sql = ("DELETE livro WHERE codLivro=(?)");
PreparedStatement ps = con.prepareStatement(sql);
ps.setInt(1, l.getCodLivro());

if(ps.executeUpdate()>0){
return true;
} else{
return false;
}

}

@Override
public boolean atualizarLivro(Livro l) throws SQLException{

String sql = ("UPDATE livro SET isbn = ?,"
+" nomeLivro = ?,"
+"dataPub = ?,"
+"nomeAutor = ?,"
+"nomeEditora = ?,"
+"assunto = ?, "
+"status = ?,"
+"descricao = ? WHERE codLivro = ?");
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1, l.getIsbn());
ps.setString(2, l.getNomeLivro());
ps.setString(3, l.getDataPub());
ps.setString(4, l.getNomeAutor());
ps.setString(5, l.getNomeEditora());
ps.setString(6, l.getAssunto());
ps.setString(7, l.getStatus());
ps.setString(8, l.getDescricao());

if(ps.executeUpdate()>0){
return true;
} else{
return false;
}
}

public Livro getById(int ID) throws SQLException{
String SQL = "SELECT * FROM clientes WHERE id = ?";

PreparedStatement ps = con.prepareStatement(SQL);
ps.setInt(1, ID);

ResultSet rs = ps.executeQuery();

Livro li = new Livro();

if (rs.first()){
li.setCodLivro(rs.getInt("codLivro"));
li.setIsbn(rs.getString("isbn"));
li.setNomeLivro(rs.getString("nomeLivro"));
li.setDataPub(rs.getString("dataPub"));
li.setNomeAutor(rs.getString("nomeAutor"));
li.setNomeEditora(rs.getString("nomeEditora"));
li.setAssunto(rs.getString("assunto"));
li.setStatus(rs.getString("status"));
li.setDescricao(rs.getString("descricao"));

}

return li;
}


}
----------------



6 Respostas


Colocando o Codigo aqui da Pagina JSF, pois esqueci de colocar a Tag.





xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">


<span class="typ">Livro</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="typ">Manter</span><span class="pln"> </span><span class="typ">Dados</span>









Controle de Livros - Atualizar












































[XML]


xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core">


Livro - Manter Dados









Controle de Livros - Atualizar









































[/XML]




Já resolvi parte do erro, e que eu estava vinculando alguns campos usando o for com os campos de preenchimento, porém o erro ainda persiste quando tento realizar alguma atualização, o sistema não permite e retorna mensagem de erro, aquela criada usando a página. Quando os dados não são inseridos no banco de dados.




Erick

Pode nos falar melhor sobre este erro que cita?




Então eu criei o modelo igual ao que vocês postaram, porém quando eu tento chamar o atualizar o sistema não atualiza os dados no banco.




Consegui resolver no Atualizar do DAO eu tinha esquecido de colocar um campo, o campo do ID, agora está funcionando... valeu.



Você precisa logar para interagir no fórum