0

在将数据插入数据库之前尝试验证空白字段时遇到问题。我目前正在使用 Netbeans JavaFX 应用程序、场景构建器和 MySQL。

对于此方法,它将面板内的组件传递给控制器​​类。

private void createProduct(ActionEvent event){
CreateProductController controller = new CreateProductController();
boolean result = controller.create(myPane);
if(result)
{
    System.out.println("Success");
}
}

在我的控制器类中,我有一个 validateDetails 方法,它在插入之前检查空白字段和​​一个 create 方法。

public boolean create(CreateProductUI panel){
    String name = panel.getNameTextField().getText();
    //And the rest of the components which I removed before it's very long

    //I used if else statement to check 
    boolean invalid = true;
    if(invalid){
        validateDetails(name,desc,priceStr,qtyStr,dateStr,image,category);
        return invalid;
    }else{
    invalid = false;
    Product product1 = new Product(name,desc,price,quantity,dateStr,image,category);
    product1.create();
    return invalid;
    }
}

这是我的验证方法:

  public void validateDetails(String name,String desc,String priceStr,String qtyStr,String dateStr,Image image,int category){
    if(name.equals("")){
        JOptionPane.showMessageDialog(null,"Please enter name");       
    }else if(desc.equals("")){
        JOptionPane.showMessageDialog(null,"Please enter description");
    }else if(priceStr.equals("")){
        JOptionPane.showMessageDialog(null,"Please enter price");
    }else if(qtyStr.equals("")){
        JOptionPane.showMessageDialog(null,"Please enter quantity");
    }else if(category <= -1){
        JOptionPane.showMessageDialog(null,"Please choose category");
    }
}

但是,当检测到任何空白字段时,程序不会执行以提示错误消息。例如,我将 2 个字段留空。它应该提示两次。相反,它只是添加到我的数据库表中。

提前致谢。

4

2 回答 2

0

而不是仅使用else ifuse'if条件。因为在您的情况下,如果名称字段不为空,则不会检查第二个条件。

于 2013-09-11T08:03:45.970 回答
0

将您的方法更改为如下:

public boolean create(CreateProductUI panel){
 String name = panel.getNameTextField().getText();
 //And the rest of the components which I removed before it's very long

 //I used if else statement to check 
 boolean valid = validateDetails(name,desc,priceStr,qtyStr,dateStr,image,category);

 if(valid) {
     Product product1 = new Product(name,desc,price,quantity,dateStr,image,category);
     product1.create();
 }

 return valid;
 }
}



public boolean validateDetails(String name,String desc,String priceStr,String qtyStr,String dateStr,Image image,int category){

 StringBuilder sb = new StringBuilder();
 if(name.equals("")){
    sb.append(" name ");
 }
 if(desc.equals("")){
    sb.append(" desc ");     
 }
 if(priceStr.equals("")){
    sb.append(" Price "); 
 }
 if(qtyStr.equals("")){
   sb.append(" Quantity ");     
 }
 if(category <= -1){
sb.append(" Category ");    
 }
 String message = sb.toString();
 if(message.length() > 0) {
   JOptionPane.showMessageDialog(null,"Please fill up these values: "+message);
   return false;
 }
 return true;
} 
于 2013-06-20T12:29:37.653 回答