Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Você está aqui:
JSF - Java Server Faces :::
JSF HTML Tags ::: |
|
Como listar as informações de uma tabela do banco de dados em um controle <h:dataTable>Quantidade de visualizações: 14885 vezes |
|
O controle <h:dataTable> é um dos mais usados quando o assunto é listar as informações vindas de uma tabela de um banco de dados. Nesta dica eu mostro como isso pode ser feito. O exemplo é composto das seguintes partes: a) Um bean Contato que possui os membros id, nome, telefone e email; b) Um bean Agenda que nos permitirá conectar à tabela no banco de dados, obter todos os contatos na tabela contatos e retorná-los como uma lista de objetos da classe Contato; c) Uma classe de conexão; d) Uma página JSP ou Facelets contendo um controle <h:dataTable>. Vamos começar criando a tabela do banco de dados. Veja o comando SQL DDL para a sua criação (nesta dica eu usei o MySQL, mas, você pode usar outros bancos de dados. Basta alterar os parâmetros da classe Conexao): CREATE TABLE contatos( id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, nome VARCHAR(45) NOT NULL, telefone VARCHAR(45) NOT NULL, email VARCHAR(45) NOT NULL, PRIMARY KEY (id) ) Criada a tabela no banco de dados, vamos escrever a classe de conexão. Veja o código: Código para Conexao.java: package arquivo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class Conexao{ static String url = "jdbc:mysql://localhost/estudos"; static String usuario = "root"; static String senha = "osmar1234"; static Connection conn = null; public static Connection getConexao(){ if(conn != null){ return conn; } else{ try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); conn = DriverManager.getConnection(url, usuario, senha); return conn; } catch(SQLException ex){ System.err.println("SQLException: " + ex.getMessage()); System.err.println("SQLState: " + ex.getSQLState()); System.err.println("VendorError: " + ex.getErrorCode()); return null; } catch(Exception e){ System.err.println("Problemas ao tentar conectar com o banco de dados: " + e); return null; } } } } Pronto! Agora que já temos a tabela criada no banco de dados e já temos também a classe de conexão, vamos criar a classe de negócios, ou seja, o bean gerenciado JSF Contato. Veja o código: Código para Contato.java: package arquivo; import java.io.Serializable; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean @SessionScoped public class Contato implements Serializable{ private int id; private String nome; private String telefone; private String email; // construtor padrão public Contato(){ } // consstrutor alternativo public Contato(int id, String nome, String telefone, String email){ this.id = id; this.nome = nome; this.telefone = telefone; this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getTelefone() { return telefone; } public void setTelefone(String telefone) { this.telefone = telefone; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } Note que este bean foi marcado com as anotações @ManagedBean (que o torna um bean gerenciado JSF) e @SessionScoped (que o coloca em escopo de sessão). Agora podemos criar o bean Agenda, que fará a conexão com o banco de dados, obterá os registros da tabela contatos e os retornará como uma lista de objetos da classe Contato para exibição no controle <h:dataTable>. Código para Agenda.java: package arquivo; import java.sql.*; import java.util.ArrayList; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; @ManagedBean @SessionScoped public class Agenda implements Serializable{ public Agenda() { } // método que permite obter a lista de contatos public ArrayList<Contato> getListaContatos() { // lista que guardará os contatos ArrayList<Contato> lista = new ArrayList<Contato>(); // obtém a conexão com o banco de dados Connection conn = Conexao.getConexao(); try { Statement stmt = conn.createStatement(); String query = "SELECT * FROM contatos ORDER BY nome"; ResultSet rs = stmt.executeQuery(query); while (rs.next()) { int id = rs.getInt("id"); String nome = rs.getString("nome"); String telefone = rs.getString("telefone"); String email = rs.getString("email"); Contato c = new Contato(id, nome, telefone, email); // vamos adicionar este contato à lista lista.add(c); } } catch (SQLException ex) { // talvez um log aqui } return lista; } } Veja que a lista de contatos é retornada como uma lista ArrayList<Contato>, obtida a partir do método getListaContatos(), que faz uma conexão com o banco de dados, lista os registros da tabela contatos e os adiciona à ArrayList como objetos da classe Contato. Para finalizar o exemplo, veja agora o código para a página JSP ou Facelets que contém o controle <h:dataTable>: <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"> <h:head> <title>Estudos JavaServer Faces</title> </h:head> <h:body> <h:form> <h:dataTable border="1" value="#{agenda.listaContatos}" var="contato"> <h:column>#{contato.id}</h:column> <h:column>#{contato.nome}</h:column> <h:column>#{contato.telefone}</h:column> <h:column>#{contato.email}</h:column> </h:dataTable> </h:form> </h:body> </html> A lista de contatos é obtida pelo controle <h:dataTable> por meio do valor "#{agenda.listaContatos}" atribuído à sua propriedade value e cada contato está disponível no corpo da tag por meio do valor "contato" fornecido à propriedade var. Insira alguns registros na tabela contatos e execute a aplicação para ver o resultado. |
|
Link para compartilhar na Internet ou com seus amigos: | |
Ruby ::: Dicas & Truques ::: Strings e Caracteres |
Como concatenar strings em Ruby usando o operador <<Quantidade de visualizações: 8159 vezes |
Esta dica mostra como podemos usar o operador << para concatenar strings em Ruby. Veja: frase1 = "Gosto muito de Ruby" frase2 = " e de Python" # vamos concatenar as duas strings res = frase1 << frase2 # exibe o resultado puts res Ao executar este código Ruby nós teremos o seguinte resultado: Gosto muito de Ruby e de Python |
JavaScript ::: Dicas & Truques ::: Miscelâneas |
JavaScript para iniciantes - Como usar o método escape() para codificar uma frase em JavaScriptQuantidade de visualizações: 12245 vezes |
A função escape() da linguagem JavaScript é usada quando precisamos codificar uma palavra, frase ou texto, ou seja, uma string. Em geral nós a usamos para codificar caracteres especiais em uma string, com a exceção dos caracteres e símbolos "* @ - _ + . /". Veja um exemplo completo: <html> <head> <title>Estudando JavaScript</title> </head> <body> <script type="text/javascript"> var frase = "Programar em JavaScript é muito bom"; document.write("Original: " + frase + "<br>"); document.write("Codificada: " + escape(frase)); </script> </body> </html> Ao executarmos este código nós teremos o seguinte resultado: Original: Programar em JavaScript é muito bom Codificada: Programar%20em%20JavaScript %20%E9%20muito%20bom Lembre-se de que o objetivo da função escape() é tornar uma string portável, ou seja, que pode ser transmitida pela rede para qualquer computador que suportar os caracteres ASCII. Nota: A função escape() foi marcada como desatualizada (deprecated) a partir do JavaScript 1.5. Em vez dela nós devemos usar as funções encodeURI() ou encodeURIComponent(). |
Java ::: Tratamento de Erros ::: Erros de Tempo de Execução |
Tratamento de erros em Java - Como tratar o erro ArrayIndexOutOfBoundsException em JavaQuantidade de visualizações: 17579 vezes |
A exceção ArrayIndexOutOfBoundsException é uma exceção (erro) que acontece quando fornecemos um índice fora dos limites permitidos para o acesso de elementos em um vetor ou matriz (array). Lembre-se de que os índices em Java começam em 0 e vão até a quantidade de elementos menos 1. Antes de vermos os exemplos, observe a posição da classe pública ArrayIndexOutOfBoundsException na hierarquia de classes da plataforma Java: java.lang.Object java.lang.Throwable java.lang.Exception java.lang.RuntimeException java.lang.IndexOutOfBoundsException java.lang.ArrayIndexOutOfBoundsException Esta classe implementa a interface Serializable. Veja um exemplo no qual tentamos acessar um elemento de um vetor ou matriz usando um índice inválido: public class Estudos{ public static void main(String args[]){ // um array de quatro elementos int[] valores = {5, 23, 76, 3}; // vamos fornecer um índice inválido System.out.println(valores[4]); System.exit(0); } } Este código compila normalmente. Porém, ao tentarmos executá-lo, temos a seguinte mensagem de erro: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at Estudos.main(Estudos.java:7) A forma mais adequada de corrigir este erro é fornecendo um valor de índice que realmente esteja na faixa permitida. |
C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como abrir ou criar arquivos em C usando a função fopen()Quantidade de visualizações: 66019 vezes |
Há muitas situações nas quais precisamos ler ou gravar dados em arquivos a partir de nossos programas C. O primeiro passo para esta tarefa é aprender a usar a função fopen(). Esta função é a responsável por conectar um ponteiro de arquivos ao arquivo que queremos manipular. Veja sua assinatura:FILE *fopen(const char *nome, const char *modo); O parâmetro nome é uma string que indica o nome do arquivo a ser aberto ou criado. O parâmetro modo indica se o arquivo será aberto para leitura, escrita ou ambos. Antes de continuarmos, veja um trecho de código que tenta abrir um arquivo chamado "testes.txt" localizado no diretório "c:\": #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { FILE *arquivo = fopen("c:\\testes.txt", "r"); // testa se o arquivo foi aberto com sucesso if(arquivo != NULL) printf("Arquivo foi aberto com sucesso."); else printf("Nao foi possivel abrir o arquivo."); printf("\n\n"); system("PAUSE"); return 0; } Veja que a primeira linha declara um ponteiro para a estrutura FILE e atribui a este ponteiro o resultado de uma chamada à função fopen(). Se o arquivo for aberto com sucesso, poderemos manipulá-lo a partir do ponteiro *arquivo. Do contrário, o valor NULL será retornado. A linguagem C padrão permite a definição dos seguintes modos de abertura de arquivos: a - abre um arquivo para inserção. Se o arquivo não existir, o sistema operacional tentará criá-lo. r - abre um arquivo existente para leitura. w - abre um arquivo para escrita. Se o arquivo não existir, o sistema operacional tentará criá-lo. Se o arquivo existir, todo o seu conteúdo será substituído pelo novo conteúdo. r+ - abre um arquivo existente para leitura e gravação. w+ - abre um arquivo para leitura e escrita. Se o arquivo não existir, o sistema operacional tentará criá-lo. Se o arquivo existir, todo o seu conteúdo será substituído pelo novo conteúdo. a+ - abre um arquivo para inserção e leitura. Se o arquivo não existir, o sistema operacional tentará criá-lo. |
Java ::: Classes e Componentes ::: JTextArea |
Java Swing - Como detectar alterações no conteúdo de um JTextAreaQuantidade de visualizações: 8819 vezes |
Nesta dica veremos como é possível escrever uma aplicação Java Swing que detecta quando o conteúdo de um controle JTextArea é alterado. Para isso nós vamos fazer a janela JFrame implementar a interface DocumentListener e fornecer comportamento para seus método insertUpdate(), removeUpdate() e changedUpdate(). O resultado do código é refletido na imagem abaixo: E agora o código Java Swing completo para o exemplo: package arquivodecodigos; import javax.swing.*; import java.awt.*; import javax.swing.event.*; public class Estudos extends JFrame implements DocumentListener{ JTextArea textArea; JLabel aviso; public Estudos() { super("Detectando alterações em um JTextArea"); Container c = getContentPane(); FlowLayout layout = new FlowLayout(FlowLayout.LEFT); c.setLayout(layout); textArea = new JTextArea(10, 20); textArea.setLineWrap(true); textArea.getDocument().addDocumentListener(this); aviso = new JLabel("Aviso de alterações"); c.add(textArea); c.add(aviso); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void insertUpdate(DocumentEvent e) { aviso.setText("Aviso de Inserção: " + e.toString()); } public void removeUpdate(DocumentEvent e) { aviso.setText("Aviso de Remoção: " + e.toString()); } public void changedUpdate(DocumentEvent e) { // pode obter os dois anteriores aqui // aviso.setText("Aviso de Alteração: " + e.toString()); } } |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |