Vaidação de campo em branco

12 respostas
S

Bom dia amigos,

Sou novo em programação em java e creio que minha dúvida seja muito simples de resolver, no código abaixo tenho uma validação para ver se os campos do formulário estão vazios porém ela não está acontecndo o programa está deixando salvar os dados em branco no banco na parte "if (cadastroemp == null) essa validação nao está acontecendo. Agradeço desde já a ajuda de todos.

public void salvar (CadastroEmpresaBeans cadastroemp) throws Exception{

PreparedStatement ps = null;

Connection conn = null;

[color=red][color=green]    if (cadastroemp == null)

throw new Exception (O valor passado não pode ser nulo);[/color][/color]

try{

String SQL = "INSERT INTO empresa (nome_emp) "+

values (?);

conn = this.conn;

ps = conn.prepareStatement(SQL);

ps.setString(1, cadastroemp.getDesc());

ps.executeUpdate();

}

catch (SQLException sqle){

throw new Exception("Erro ao inserir dados "+ sqle);

}

finally {Conexao.closeConnection (conn,ps); }

}

12 Respostas

kenneth

Fala jovem,

Antes de mais nada, voce deve ler isto aqui:
http://guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Depois, com relacao a sua duvida, imagino eu que voce esteja tentando validar se o usuario digitou algo.
O null valida se o componente foi inicializado, e nao seu conteudo.
Para isso faca algo como:

cadastroemp.getDesc().length = 0

// se nao me engano, tambem existe esse metodo

cadastroemp.getDesc().isEmpty();

Abraco.

nel

Oi!

Antes de mais nada, sempre que postar código use as tags code, veja a diferença:

public void salvar (CadastroEmpresaBeans cadastroemp) throws Exception{ PreparedStatement ps = null; Connection conn = null; if (cadastroemp == null) throw new Exception ("O valor passado não pode ser nulo"); try{ String SQL = "INSERT INTO empresa (nome_emp) " + "values (?)"; conn = this.conn; ps = conn.prepareStatement(SQL); ps.setString(1, cadastroemp.getDesc()); ps.executeUpdate(); } catch (SQLException sqle){ throw new Exception("Erro ao inserir dados "+ sqle); } finally {Conexao.closeConnection (conn,ps); } }

Como o objeto cadastroemp não pode ser nulo, creio que o correto seria uma IllegalArgumentException e não uma Exception, afinal, tu sabe exatamente qual o problema.

Sobre a validação, é extremamente simples:

// se a descrição não for nula e possuir algum conteúdo... if(null != cadastroemp.getDesc() && !cadastroemp.getDesc().trim().isEmpty()) { // faz algo }

Certo?
Abraços.

S

Obrigado pela dica de formatação irei prestar mais atenção da próxima.

Quanto ao código tentei o que vocês me sugeriram porém não tive exito talvez por inexpêriencia minha, então se possível gostaria de mais ajuda no sentido de dizer um pouco mais detalhado que deveria fazer.

Grato.

nel
syquara:
Obrigado pela dica de formatação irei prestar mais atenção da próxima.

Quanto ao código tentei o que vocês me sugeriram porém não tive exito talvez por inexpêriencia minha, então se possível gostaria de mais ajuda no sentido de dizer um pouco mais detalhado que deveria fazer.

Grato.

Fez a alteração que indiquei?
Veja:

public void salvar (CadastroEmpresaBeans cadastroemp) throws Exception {   
			PreparedStatement ps = null;   
			Connection conn = null;   
			if (cadastroemp == null)   
			    throw new IllegalArgumentException ("O valor passado não pode ser nulo");
			
			if (null == cadastroemp.getDesc() || cadastroemp.getDesc().trim().isEmpty())
				throw new IllegalArgumentException ("É obrigatório o preenchimento da descriação da empresa.");
			
			try{   
				String SQL = "INSERT INTO empresa (nome_emp) " + "values (?)";   
				conn = this.conn;   
				ps = conn.prepareStatement(SQL);   
				ps.setString(1, cadastroemp.getDesc());   
				ps.executeUpdate();   
			} catch (SQLException sqle){   
				throw new Exception("Erro ao inserir dados "+ sqle);   
			} finally {
				Conexao.closeConnection (conn,ps); 
			}   
		}

Aqui é validado apenas a descrição da empresa, agora podes fazer para todos os campos que julgar obrigatórios.
Veja bem, talvez esse tipo de garantia possa ser feito na tela, quando o usuário decide persistir os dados.

De qualquer forma, a idéia é essa.
Abraços.

S

Coloquei exatamente como você escreveu e ainda assim ele está castrando as informações, ou seja, não está verificando

nel

Eu inverti os sinais, está corrigido acima.
Agora com certeza a validação será executada.

S

Muito obrigado por sua ajuda agora está funcionando.

S
Amigos, boa tarde!

Estou tentando colocar uma validação em que se um determinado campo estiver vazio o botao salvar fique desabilitado.

Tentei o seguinte

public void testaBtnGravar(){
if (txnome.getText().length() >0 ){
btsalvar.setEnabled(true);
}else {
btsalvar.setEnabled(false);
}
}

Porém nao sei o que acontece que funciona segue abaixo o codigo inteiro.

Desde ja agradeço a ajuda.

package br.fastel.telas;

import br.fastel.beans.CadastroEmpresaBeans;
import br.fastel.persistencia.CadastroEmpresaDAO;
import javax.swing.JOptionPane;



public class CadastroEmpresa extends javax.swing.JFrame {
    public CadastroEmpresa() {
        initComponents();
    }

     @SuppressWarnings("unchecked")
    
       
   private void initComponents() {

        jPanel1 = new javax.swing.JPanel();
        lbnome = new java.awt.Label();
        txnome = new java.awt.TextField();
        btsalvar = new java.awt.Button();
        btnovo = new java.awt.Button();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Cadastro Empresa");
        setBackground(new java.awt.Color(255, 255, 255));
        setIconImages(null);
        setResizable(false);

        jPanel1.setBackground(new java.awt.Color(204, 204, 255));

        lbnome.setText("Nome:");

        txnome.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                txnomeActionPerformed(evt);
            }
        });

        btsalvar.setLabel("Salvar");
        btsalvar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AoClicarSalvar(evt);
            }
        });

        btnovo.setLabel("Novo");
        btnovo.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                AoClicarNovo(evt);
            }
        });

        javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(jPanel1Layout.createSequentialGroup()
                        .addComponent(lbnome, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txnome, javax.swing.GroupLayout.DEFAULT_SIZE, 236, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
                        .addComponent(btnovo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(27, 27, 27)
                        .addComponent(btsalvar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );

        jPanel1Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {btnovo, btsalvar});

        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jPanel1Layout.createSequentialGroup()
                .addGap(20, 20, 20)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                    .addComponent(lbnome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txnome, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(btsalvar, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnovo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>

       
    
    private void txnomeActionPerformed(java.awt.event.ActionEvent evt) {                                       
        // TODO add your handling code here:
    }                                      
    
    

    private void AoClicarSalvar(java.awt.event.ActionEvent evt) {                                
       //  if (txnome == null)
        //    btsalvar.setEnabled(false);
    
        
        try{
                CadastroEmpresaBeans c11 = new CadastroEmpresaBeans ();
                CadastroEmpresaDAO con = new CadastroEmpresaDAO ();
                c11.setDesc(txnome.getText());
                con.salvar(c11);
                JOptionPane.showMessageDialog(null,"Cadastro Realizado","Operação Confirmada",JOptionPane.INFORMATION_MESSAGE);
               }
                catch (Exception e){
                    JOptionPane.showMessageDialog(null,"Houve um erro na inclusão","Erro na inclusão", JOptionPane.ERROR_MESSAGE );
                    JOptionPane.showMessageDialog(null, e);
                }
              
    }                               

    private void AoClicarNovo(java.awt.event.ActionEvent evt) {                              
       txnome.setText("");
       
    }                             

    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {

            public void run() {
                new CadastroEmpresa().setVisible(true);
            }
        });
    }
    // Variables declaration - do not modify
    private java.awt.Button btnovo;
    private java.awt.Button btsalvar;
    private javax.swing.JPanel jPanel1;
    private java.awt.Label lbnome;
    private java.awt.TextField txnome;
    // End of variables declaration
}
S

Desculpe amigo não consegui colocar a formatação como indicado

nel

use as tags CODE, basta clicar no botão logo acima escrito “Code”, inserir seu código e clicar nele novamente ou ir na mão com [ code], sem espaço.

public void testaBtnGravar(){ if (!txnome.getText().trim().isEmpty) { btsalvar.setEnabled(true); } else { btsalvar.setEnabled(false); } }

Tente. E ocorre algum erro?

S

Obrigado pela dica, consertei lá.

Voltando ao código, não acontece nada , na verdade nao sei onde colocar ao certo esse codigo ou se está com alguma coisa errada.

nel

syquara:
Obrigado pela dica, consertei lá.

Voltando ao código, não acontece nada , na verdade nao sei onde colocar ao certo esse codigo ou se está com alguma coisa errada.

Quando você realiza o click sobre um botão, você está acionando um evento. Você deve tratar, nesse evento, as tuas necessidades.
Em particular, tu queres fazer uma determinada verificação. Portanto, faça a verificação e apresente uma mensagem de erro ao usuário indicando que o campo x deve ser preenchido antes de salvar as configurações.

Se desejar fazer dessa forma, de desabilitar o botão de save, faça com que ele seja carregado como setEnable(false) no inicio e somente será habilitado caso o usuário digite algo no campo desejado. Ai é com você, tem eventos de keyUp, keyDown, onFocus entre outros.

Abraços.

Criado 9 de setembro de 2011
Ultima resposta 13 de set. de 2011
Respostas 12
Participantes 3