2013-06-20 74 views
0

驗證空白字段嘗試之前在數據庫中插入數據,以驗證空白字段時,我有問題。我目前使用Netbeans JavaFX應用程序,場景構建器和MySQL。JavaFX中

對於這種方法,它會通過內片組件到控制器類。

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

在我的控制器類裏面,我得到了一個validateDetails方法,它在insert和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; 
    } 
} 

這纔是我的validate方法:

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"); 
    } 
} 

然而,該方案並不時檢測到任何空白字段進行提示錯誤信息。例如,我將兩個字段留空。它應該提示兩次。相反,它只是添加到我的數據庫表。

在此先感謝。

回答

1

更改方法,如下是:

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; 
} 
+0

儘管如此,它只檢查一個字段。如果多於一個空白字段,我會打錯誤。 –

+0

因爲我使用if else語句,所以它只能逐個檢查。有沒有其他方法可以用於驗證? –

+0

用更好的方法更新了答案。似乎你應該刷新你的核心Java技能。 – Mubin

0

而不是使用else if使用」僅if條件。因爲在你的情況下,如果名稱字段不是空的,它不會檢查第二個條件。