验证JavaFX中的空白字段
在数据库中插入数据之前,尝试验证空白字段时出现问题。我目前正在使用Netbeans JavaFX应用程序、场景生成器和MySQL 对于此方法,它将面板内的组件传递到控制器类中验证JavaFX中的空白字段,java,mysql,validation,javafx,Java,Mysql,Validation,Javafx,在数据库中插入数据之前,尝试验证空白字段时出现问题。我目前正在使用Netbeans JavaFX应用程序、场景生成器和MySQL 对于此方法,它将面板内的组件传递到控制器类中 private void createProduct(ActionEvent event){ CreateProductController controller = new CreateProductController(); boolean result = controller.create(myPane); if(
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");
}
}
public void validateDetails(字符串名称、字符串描述、字符串priceStr、字符串qtyStr、字符串dateStr、图像、整数类别){
if(name.equals(“”){
showMessageDialog(null,“请输入名称”);
}else if(描述等于(“”){
showMessageDialog(null,“请输入说明”);
}else if(priceStr.equals(“”){
showMessageDialog(空,“请输入价格”);
}else if(qtyStr.equals(“”){
showMessageDialog(空,“请输入数量”);
}否则,如果(类别将您的方法更改为:
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;
}
公共布尔创建(CreateProductUI面板){
字符串名称=panel.getNameTextField().getText();
//还有我在很长时间之前移除的其他组件
//我使用if-else语句进行检查
boolean valid=validatedtails(名称、描述、价格、数量、日期、图像、类别);
如果(有效){
product1=新产品(名称、描述、价格、数量、日期、图片、类别);
product1.create();
}
返回有效;
}
}
公共布尔验证详细信息(字符串名称、字符串描述、字符串价格字符串、字符串qtyStr、字符串日期字符串、图像、整数类别){
StringBuilder sb=新的StringBuilder();
if(name.equals(“”){
某人附加(“姓名”);
}
如果(描述等于(“”){
某人附加(“说明”);
}
if(priceStr.equals(“”){
某人附加(“价格”);
}
如果(qtyStr.equals(“”){
某人追加(“数量”);
}
如果(类别0){
showMessageDialog(null,“请填写这些值:”+message);
返回false;
}
返回true;
}
而不是使用else if
只使用“if
条件。因为在您的情况下,如果name字段不为空,它不会检查第二个条件。仍然只检查一个字段。如果多个字段为空,我会出错。因为我使用的是if else语句,所以它只能逐个检查。还有其他方法吗我能为验证做些什么?用更好的方法更新了答案。似乎你应该提高你的核心Java技能。你说它不起作用是什么意思。到底发生了什么。更新你现在使用的问题中的代码。例如,如果我遗漏了名称和描述,错误消息应该有名称和描述n、 但它只显示名称