Bom dia a todos, pessoal estou com um projeto de medio porte parado em função de um problema que acredito eu que não seja tão complicado, porém como não tenho tanto tempo de experiência não estou conseguindo resolvê-lo, e preciso dar um jeito nisso o mais rápido possível, o problema é o seguinte:
tenho uma palicação web, estou usasndoo visual web java server faces para desenvolvê-la (antigo visual web pack) porém toda parte de acesso a banco de dados estou fazendo via código mesmo, como fazemos quando criamos uma aplicação desktop, até ai tudo bem, só que tenho algumas tabelas no banco de dados como por exemplo(ESTADO, CIDADE, EDITORA, CLASSIFICAÇÃO, IDIOMAS, STATUS) que precisavam ser carregadas por um drop down list ou por uma list cada, porém ja tentei criar a conexão em servives e arrastar a tabela para o drop down list e não da certo, ja mexi no bind to date também não deu certo, estou usando o netbeans 6.5, e SQLserver, gostaria de fazer isto via código mesmo tipo preenchendo um vetor e joga-lo no drop down, até tentei criei um provider criei um metodo que carregasse os dados da tabela através de um vetor, e tentei usá-los para carregar o drop down list, mas mesmo assim não da, acredito que muitos membros aqui ja devem ter feito isto ou possuem algum projeto para me passar e eu me basear, preciso muito de ajuda por favor se puderem me ajudar eu agradeceria muito,
obrigado pela atenção aos que leram. e tudo de bom.
Cara, eu também mexo com o Visual JSF do NetBeans (que cá entre nós, é uma porcaria). Coloque mais detalhes aqui das tabelas e dos métodos que fez que eu consigo te ajudar.
Muito obrigado pela atenção amigo, bom o método que carrega um vetor com os dados da tabela é o seguinte:
public ArrayList selectTodosEstados() throws SQLException{
// ira armazenar os estado
ArrayList <Estados> estadoArray = new ArrayList();
Statement stmt= con.createStatement();//objeto comdo sql
ResultSet RS= stmt.executeQuery("SELECT * FROM ESTADOS");
while (RS.next()){
// pega o resultado do select
Estados estado = new Estados();
estado.setEstado( RS.getString("estados"));
estadoArray.add(estado);
System.out.println(estado.getEstado());
} // fim do while
RS.close ();
stmt.close();
con.close(); //fecha conexão com BD
return estadoArray;
} // fim do metodo
e as tabelas são simples com apenas uma coluna (TABELA DE ESTADOS, CIDADES,STATUS,IDIOMAS) todas com uma unica coluna que seria o próprio estado,cidade,status,idiomas como primary key.
o método funcionou, pois o System.out.println esta imprimindo os estados, mas não conigo carrega-lo no drop down list, ou na list.
Amigo se puder me ajudar ficarei muito agradecido pois conseguiria finalizar a primeira faze do projeto, de qualquer forma muito obrigado pelo interesse em ajudar, abraço .
Bom dia, não tem o que se desculpar, desculpe me pela minha ignorância, mas esta segunda parte do ObjectListDataProvider deve ser criada dentro da SessionBean1??
Agradeço pela atenção… e muito obrigado pela sua colaboração,
Bom este é o código referente a minha página, algumas list define valores padrões, porém a minha intenção é usar dados vindos do banco mesmo.
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package bibliotecack.admin;
import Formatar.FormatarDate;
import Formatar.FormatarMatricula;
import bibliotecack.modelo.list.Estados;
import bibliotecack.dao.list.EnderecosDAO;
import com.sun.data.provider.impl.CachedRowSetDataProvider;
import com.sun.rave.web.ui.appbase.AbstractPageBean;
import com.sun.webui.jsf.component.Calendar;
import com.sun.webui.jsf.component.Listbox;
import com.sun.webui.jsf.component.TextField;
import com.sun.webui.jsf.model.DefaultOptionsList;
import com.sun.webui.jsf.model.DefaultTableDataProvider;
import com.sun.webui.jsf.model.SingleSelectOptionsList;
import javax.faces.FacesException;
import bibliotecack.RequestBean1;
import bibliotecack.ApplicationBean1;
import bibliotecack.SessionBean1;
import bibliotecack.dao.SocioDAO;
import bibliotecack.modelo.Socio;
import bibliotecack.validar.CheckCPFCNPJ;
import java.sql.SQLException;
import java.util.Date;
import java.util.List;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.event.ValueChangeEvent;
import javax.swing.JOptionPane;
/**
* <p>Page bean that corresponds to a similarly named JSP page. This
* class contains component definitions (and initialization code) for
* all components that you have defined on this page, as well as
* lifecycle methods and event handlers where you may add behavior
* to respond to incoming events.</p>
*
* @version CadastroSocios.java
* @version Created on Jan 28, 2009, 11:50:18 AM
* @author caio.correa
*/
public class CadastroSocios extends AbstractPageBean {
/**
* metodo que busca todos os estados e adiciona no combo box da pagina
/*private void CarregaEstadosComboBox() {
EnderecosDAO query = new EnderecosDAO();
ArrayList <Estados> aux = new ArrayList();
try {
// getRequestBean1().getEstadosProvedor().setList(query.selectTodosEstados());
aux = query.selectTodosEstados();
} catch (SQLException ex) {
// Logger.getLogger(FecharOrdemServico.class.getName()).log(Level.SEVERE, null, ex);
JOptionPane.showMessageDialog(null, ex.getMessage());
}
} // fim do metodo
*/
// <editor-fold defaultstate="collapsed" desc="Managed Component Definition">
/**
* <p>Automatically managed component initialization. <strong>WARNING:</strong>
* This method is automatically generated, so any user-specified code inserted
* here is subject to being replaced.</p>
*/
public void carregar() throws SQLException{
Estados filtro = getRequestBean1().getEstados();
EnderecosDAO ed = new EnderecosDAO();
// para simplificar o tutorial, o filtro não será utilizado,
// ficando o resultado deste método sempre trazendo todos os registros
// a modificação necessária aqui fica por conta de você, ok?
List registros = ed.selectTodosEstados();
getSessionBean1().getEstadosProvedor().setList(registros);
}
private void _init() throws Exception {
carregar();
txtCidadeDefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("SANTOS", "SANTOS")});
txtOrgaoDefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("000 MALOTE", "000 MALOTE")});
txtStatusDefaultOptions.setOptions(new com.sun.webui.jsf.model.Option[]{new com.sun.webui.jsf.model.Option("ATIVO", "ATIVO")});
}
private DefaultOptionsList txtStatusDefaultOptions = new DefaultOptionsList();
public DefaultOptionsList getTxtStatusDefaultOptions() {
return txtStatusDefaultOptions;
}
public void setTxtStatusDefaultOptions(DefaultOptionsList dol) {
this.txtStatusDefaultOptions = dol;
}
private DefaultOptionsList txtCidadeDefaultOptions = new DefaultOptionsList();
public DefaultOptionsList getTxtCidadeDefaultOptions() {
return txtCidadeDefaultOptions;
}
public void setTxtCidadeDefaultOptions(DefaultOptionsList dol) {
this.txtCidadeDefaultOptions = dol;
}
private DefaultOptionsList txtOrgaoDefaultOptions = new DefaultOptionsList();
public DefaultOptionsList getTxtOrgaoDefaultOptions() {
return txtOrgaoDefaultOptions;
}
public void setTxtOrgaoDefaultOptions(DefaultOptionsList dol) {
this.txtOrgaoDefaultOptions = dol;
}
private TextField txtRg = new TextField();
public TextField getTxtRg() {
return txtRg;
}
public void setTxtRg(TextField tf) {
this.txtRg = tf;
}
private TextField txtCpf = new TextField();
public TextField getTxtCpf() {
return txtCpf;
}
public void setTxtCpf(TextField tf) {
this.txtCpf = tf;
}
private TextField txtRua = new TextField();
public TextField getTxtRua() {
return txtRua;
}
public void setTxtRua(TextField tf) {
this.txtRua = tf;
}
private TextField txtNumero = new TextField();
public TextField getTxtNumero() {
return txtNumero;
}
public void setTxtNumero(TextField tf) {
this.txtNumero = tf;
}
private TextField txtComplemento = new TextField();
public TextField getTxtComplemento() {
return txtComplemento;
}
public void setTxtComplemento(TextField tf) {
this.txtComplemento = tf;
}
private TextField txtBairro = new TextField();
public TextField getTxtBairro() {
return txtBairro;
}
public void setTxtBairro(TextField tf) {
this.txtBairro = tf;
}
private Listbox txtCidade = new Listbox();
public Listbox getTxtCidade() {
return txtCidade;
}
public void setTxtCidade(Listbox l) {
this.txtCidade = l;
}
private TextField txtCep = new TextField();
public TextField getTxtCep() {
return txtCep;
}
public void setTxtCep(TextField tf) {
this.txtCep = tf;
}
private TextField txtTelComercial = new TextField();
public TextField getTxtTelComercial() {
return txtTelComercial;
}
public void setTxtTelComercial(TextField tf) {
this.txtTelComercial = tf;
}
private TextField txtTelResidencial = new TextField();
public TextField getTxtTelResidencial() {
return txtTelResidencial;
}
public void setTxtTelResidencial(TextField tf) {
this.txtTelResidencial = tf;
}
private TextField txtTelCelular = new TextField();
public TextField getTxtTelCelular() {
return txtTelCelular;
}
public void setTxtTelCelular(TextField tf) {
this.txtTelCelular = tf;
}
private Listbox txtOrgao = new Listbox();
public Listbox getTxtOrgao() {
return txtOrgao;
}
public void setTxtOrgao(Listbox l) {
this.txtOrgao = l;
}
private TextField txtMatricula = new TextField();
public TextField getTxtMatricula() {
return txtMatricula;
}
public void setTxtMatricula(TextField tf) {
this.txtMatricula = tf;
}
private Calendar txtDataCadastro = new Calendar();
public Calendar getTxtDataCadastro() {
return txtDataCadastro;
}
public void setTxtDataCadastro(Calendar c) {
this.txtDataCadastro = c;
}
private TextField txtEmail = new TextField();
public TextField getTxtEmail() {
return txtEmail;
}
public void setTxtEmail(TextField tf) {
this.txtEmail = tf;
}
private Listbox txtStatus = new Listbox();
public Listbox getTxtStatus() {
return txtStatus;
}
public void setTxtStatus(Listbox l) {
this.txtStatus = l;
}
private TextField txtNome = new TextField();
public TextField getTxtNome() {
return txtNome;
}
public void setTxtNome(TextField tf) {
this.txtNome = tf;
}
private SingleSelectOptionsList dropDown2DefaultOptions = new SingleSelectOptionsList();
public SingleSelectOptionsList getDropDown2DefaultOptions() {
return dropDown2DefaultOptions;
}
public void setDropDown2DefaultOptions(SingleSelectOptionsList ssol) {
this.dropDown2DefaultOptions = ssol;
}
private DefaultOptionsList listbox1DefaultOptions = new DefaultOptionsList();
public DefaultOptionsList getListbox1DefaultOptions() {
return listbox1DefaultOptions;
}
public void setListbox1DefaultOptions(DefaultOptionsList dol) {
this.listbox1DefaultOptions = dol;
}
private SingleSelectOptionsList ddEstadoDefaultOptions = new SingleSelectOptionsList();
public SingleSelectOptionsList getDdEstadoDefaultOptions() {
return ddEstadoDefaultOptions;
}
public void setDdEstadoDefaultOptions(SingleSelectOptionsList ssol) {
this.ddEstadoDefaultOptions = ssol;
}
// </editor-fold>
/**
* <p>Construct a new Page bean instance.</p>
*/
public CadastroSocios() {
}
/**
* <p>Callback method that is called whenever a page is navigated to,
* either directly via a URL, or indirectly via page navigation.
* Customize this method to acquire resources that will be needed
* for event handlers and lifecycle methods, whether or not this
* page is performing post back processing.</p>
*
* <p>Note that, if the current request is a postback, the property
* values of the components do <strong>not</strong> represent any
* values submitted with this request. Instead, they represent the
* property values that were saved for this view when it was rendered.</p>
*/
@Override
public void init() {
// Perform initializations inherited from our superclass
super.init();
// Perform application initialization that must complete
// *before* managed components are initialized
// TODO - add your own initialiation code here
// <editor-fold defaultstate="collapsed" desc="Managed Component Initialization">
// Initialize automatically managed components
// *Note* - this logic should NOT be modified
// CarregaEstadosComboBox();
try {
_init();
} catch (Exception e) {
log("CadastroSocios Initialization Failure", e);
throw e instanceof FacesException ? (FacesException) e : new FacesException(e);
}
// </editor-fold>
EnderecosDAO ed = new EnderecosDAO();
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
// Perform application initialization that must complete
// *after* managed components are initialized
// TODO - add your own initialization code here
}
/**
* <p>Callback method that is called after the component tree has been
* restored, but before any event processing takes place. This method
* will <strong>only</strong> be called on a postback request that
* is processing a form submit. Customize this method to allocate
* resources that will be required in your event handlers.</p>
*/
@Override
public void preprocess() {
}
/**
* <p>Callback method that is called just before rendering takes place.
* This method will <strong>only</strong> be called for the page that
* will actually be rendered (and not, for example, on a page that
* handled a postback and then navigated to a different page). Customize
* this method to allocate resources that will be required for rendering
* this page.</p>
*/
@Override
public void prerender() {
/*
if (txtEstados.getSelected() == null) {
Object firstEstadosId = null;
try {
// Setando estados para o primeiro pais da lista DropDown
estadosDataProvider9.cursorFirst();
firstEstadosId =
estadosDataProvider9.getValue("ESTADOS.estados");
txtEstados.setSelected(firstEstadosId);
getSessionBean1().getEstadosRowSet().setObject(
1, firstEstadosId);
estadosDataProvider9.refresh();
} catch (Exception ex) {
error("Não posso selecionar o País: " + firstEstadosId);
}
} */
}
/**
* <p>Callback method that is called after rendering is completed for
* this request, if <code>init()</code> was called (regardless of whether
* or not this was the page that was actually rendered). Customize this
* method to release resources acquired in the <code>init()</code>,
* <code>preprocess()</code>, or <code>prerender()</code> methods (or
* acquired during execution of an event handler).</p>
*/
@Override
public void destroy() {
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected RequestBean1 getRequestBean1() {
return (RequestBean1) getBean("RequestBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected ApplicationBean1 getApplicationBean1() {
return (ApplicationBean1) getBean("ApplicationBean1");
}
/**
* <p>Return a reference to the scoped data bean.</p>
*
* @return reference to the scoped data bean
*/
protected SessionBean1 getSessionBean1() {
return (SessionBean1) getBean("SessionBean1");
}
public void listbox1_processValueChange(ValueChangeEvent event) {
}
public void txtTelCelular_processValueChange(ValueChangeEvent event) {
}
public void txtCep_processValueChange(ValueChangeEvent event) {
}
public String btnSalvar_action() throws SQLException {
Socio socio = new Socio();
SocioDAO socioDAO = new SocioDAO();
FormatarDate FD = new FormatarDate();
FormatarMatricula FM = new FormatarMatricula();
CheckCPFCNPJ CC = new CheckCPFCNPJ();
String auxValida;
boolean auxValidada;
auxValida = (String) txtCpf.getText();
auxValidada = CC.CPF(auxValida);
if(txtNome.getText() != null && txtRg.getText() != null && txtCpf.getText()!=null && txtMatricula.getText() !=null && txtDataCadastro.getText()!= null){
if(auxValidada == true){
socio.setNomeSocio((String) txtNome.getText());
socio.setRg((String) txtRg.getText());
socio.setEndereco((String) txtRua.getText());
socio.setNumeroResidencia((String) txtNumero.getText());
socio.setComplemento((String) txtComplemento.getText());
socio.setBairro((String) txtBairro.getText());
socio.setCidade((String) txtCidade.getSelected());
// socio.setEstado((String) txtEstado.getSelected());
socio.setCep((String) txtCep.getText());
socio.setTelefoneComercial((String) txtTelComercial.getText());
socio.setTelefoneResidencial((String) txtTelResidencial.getText());
socio.setTelefoneCelular((String) txtTelCelular.getText());
socio.setOrgao((String) txtOrgao.getSelected());
String aux = (String) txtMatricula.getText();
socio.setMatriculaFuncionario(FM.MatriulaColaborador(aux));
Date aux2 = txtDataCadastro.getSelectedDate();
socio.setDataCadastro(FD.MEsDiaAno(aux2));
socio.setEmail((String) txtEmail.getText());
socio.setStatus((String) txtStatus.getSelected());
socio.setCpf(auxValida);
System.out.println("CPF VALIDO");
socioDAO.salvarSocio(socio);
txtNome.setText("");
txtRg.setText("");
txtRua.setText("");
txtNumero.setText("");
txtComplemento.setText("");
txtBairro.setText("");
txtCidade.setSelected("");
// txtEstado.setSelected("");
txtCep.setText("");
txtTelComercial.setText("");
txtTelResidencial.setText("");
txtTelCelular.setText("");
txtOrgao.setSelected("");
txtMatricula.setText("");
txtDataCadastro.setText("");
txtEmail.setText("");
txtStatus.setSelected("");
txtCpf.setText("");
}else{
JOptionPane.showMessageDialog(null,"CPF inválido");
}
}else{
JOptionPane.showMessageDialog(null,"Campos com asterisco a frente são de preenchimento obrigatório!");
}
return null;
}
public void txtEstado_processValueChange(ValueChangeEvent event) throws SQLException {
}
public String hlVoltar_action() {
// TODO: Process the action. Return value is a navigation
// case name where null will return to the same page.
return "CadastrosSociosGerenciamentoSocios";
}
public void txtNome_processValueChange(ValueChangeEvent event) {
}
public void txtCpf_processValueChange(ValueChangeEvent event) {
}
public void txtCidade_processValueChange(ValueChangeEvent event) {
}
public void textField1_processValueChange(ValueChangeEvent vce) {
}
public void txtTelComercial_validate(FacesContext context, UIComponent component, Object value) {
}
public String button1_action() throws SQLException {
/*
Esta registro = getRequestBean1().getEmpresa();
JavaBahiaFacade facade = new JavaBahiaFacade();
facade.atualizarEmpresa(registro);
info("Registro atualizado com sucesso! Atualize a tabela para perceber as modificações.");
limparCamposFormulario();
} */
return null;
}
public void txtEstados_processValueChange(ValueChangeEvent event) {
// Object selectedEstadosId = txtEstados.getSelected();
try {
// Sincronizando o provedor de dados de pais com o que aparece no
// Drop Down List
//estadosDataProvider9.setCursorRow(
//estadosDataProvider9.findFirst("ESTADOS.estados",selectedEstadosId));
// Passando o parâmetro para filtrar somente os estados do
// país selecionado
//getSessionBean1().getEstadosRowSet().setObject(1,selectedEstadosId);
//estadosDataProvider9.refresh();
} catch (Exception ex) {
//error("Não posso selecionar o País: " + selectedEstadosId);
}
}
}
é que eu não entendo muito de jsf, agradeço muito mesmo pela sua ajuda, um abraço.
Também tem um exemplo no próprio netbeans “CurrencyTrader” que uma tabela é carregada desta forma que o João.Gabriel explicou, de uma olhada e conseguirá a resolver. E vi que está usando o javax.swing.JOptionPane pra web isso funciona?