Entao cara, olha so, vo te manda passo a passo pra ve se fica mais facil de tu conseguir me ajudar.
tenho 3 pacotes: Base, Fontes e Teste
Primeiro começa com a minha conexao com a base:
package Base;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Conexao {
private String driver = "org.postgresql.Driver";
private String user = "postgres";
private String pwd = "teste55";
private String url = "jdbc:postgresql://192.168.50.30:5432/leite";
Connection con = null;
public Connection Conecta() throws SQLException {
try {
Class.forName(driver);
con = DriverManager.getConnection(url, user, pwd);
} catch (ClassNotFoundException e) {
System.out.println("Erro ao conectar " + e);
} catch (SQLException e) {
System.out.println("Erro ao conectar " + e);
}
System.out.println("conectou");
return con;
}
public ResultSet Consulta(String sql) throws SQLException {
try {
Conecta();
ResultSet resultado;
Statement stmt = con.createStatement(); // Obrigatório para inclusão
// e consulta
resultado = stmt.executeQuery(sql);// efetiva a consulta no BD
return resultado;
} catch (SQLException ex) {
System.out.println("Falha ao pesquisar registro.\n" + ex);
}
return null;
}
}
Depois vem a criaçao dos campos da minha tabela em especifico que eu to trabalhando como teste
package Fontes;
public class CadLinha {
private Integer codigo;
private String descricao;
public Integer getCodigo() {
return codigo;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public String getDescricao() {
return descricao;
}
public void setDescricao(String descricao) {
this.descricao = descricao;
}
}
ai depois fiz uma funçao que me lista todos os campos da tabela, somente os campos:
package Base;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import Fontes.CadLinha;
public class CxCadLinha {
public ArrayList<CadLinha> ListarLinhas(String tabela) throws SQLException {
Conexao con = new Conexao();
String sql = "select field from info_tabela('" + tabela + "')";
System.out.println(sql);
ResultSet rsCampos = con.Consulta(sql);
ArrayList<CadLinha> listaLinha = new ArrayList<CadLinha>();
try {
while (rsCampos.next()) {
CadLinha menu = new CadLinha();
//menu.setCodigo(rsCampos.getInt("codigo"));
menu.setDescricao(rsCampos.getString("field"));
listaLinha.add(menu);
}
} catch (SQLException ex) {
Logger.getLogger(CadLinha.class.getName()).log(Level.SEVERE,
null, ex);
}
return listaLinha;
}
}
e por ultimo ai eu faço minha classe pra monta os campos, que vai invoca a classe que faz a funçao de pegar somente os campos da tabela, no caso a classe listada acima:
package Teste;
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.component.html.HtmlInputText;
import javax.faces.component.html.HtmlPanelGroup;
import Base.CxCadLinha;
import Fontes.CadLinha;
@ManagedBean
@SessionScoped
public class Novo {
private HtmlPanelGroup grupo;
private HtmlInputText texto;
private CxCadLinha cxLinha;
@SuppressWarnings("unused")
private HtmlPanelGroup CriaCampos() {
cxLinha = new CxCadLinha();
ArrayList<CadLinha> listaLinha = null;
try {
listaLinha = cxLinha.ListarLinhas("leite_linhas");
} catch (Exception e) {
e.printStackTrace();
}
texto = new HtmlInputText();
grupo = new HtmlPanelGroup();
for (int i = 0; i < listaLinha.size() && i < 8; i++) {
texto.setValue(listaLinha.get(i).getDescricao());
System.out.println(texto.getValue());
try {
grupo.getChildren().add(texto);
} catch (Exception e) {
System.out.println("erro ao criar o grupo. " + e);
}
}
return grupo;
}
}
onde aqui eu passo atraves do meu ListarLinhas que é a minha funçao que tras somente os campos da tabela
eu faço passo a passo e nao entra no catch na hora de adicionar no meu grupo, porem na hora que eu faço a chamada do meu xhtml
que chamo assim?
<h:commandButton value="teste" action="#{novo.criaCampos}"/>
e acontece esse erro:
javax.servlet.ServletException: Property ‘criaCampos’ not found on type Teste.Novo
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
que nao está achando a funçao criaCampos
se eu passar assim:
<h:panelGroup binding="#{novo.criaCampos}"/>
ele me dah praticamente o mesmo erro:
javax.servlet.ServletException: /Teste.xhtml @17,46 binding="#{novo.criaCampos}": Property ‘criaCampos’ not found on type Teste.Novo
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
ai se eu passar usando o pacote antes do nome da classe:
<h:panelGroup binding="#{teste.novo.criaCampos}"/>
acontece esse erro:
javax.servlet.ServletException: /Teste.xhtml @17,52 binding="#{teste.novo.criaCampos}": Target Unreachable, identifier ‘teste’ resolved to null
javax.faces.webapp.FacesServlet.service(FacesServlet.java:325)
Apesar do texto que acabei de digitar ai…ahaha…espero que fique mais claro e se possivel puder me dar um help.
Abraço!