所以我试图在javaFX中验证一些TextFields,在我早期的程序中这已经有效,但我现在似乎没有工作,我无法弄明白!浪费了几个小时!
这是我编程的弃儿 这是一个简化的课程
public class ValidateHelp {
private Text actiontarget = new Text();
public void validateName(TextField firstname, TextField lastname) throws Exception
{
if(firstname.getText().equals(""))
{
if(lastname.getText().equals(""))
{
}
else
{
throw new Exception();
}
}
else
{
throw new Exception();
}
}
这是我的第二堂课
boolean useTry = true;
try
{
vh.validateName(firstnameTextField, lastnameTextField);
firstnameTextField.setText(firstnameTextField.getText());
lastnameTextField.setText(lastnameTextField.getText());
}
catch (Exception e)
{
actiontarget.setText("Indtast et fornavn");
actiontarget.setText("Indtast et efternavn");
useTry = false;
}
if(useTry)
{
paymentPage();
}
IF语句只检查验证,当一切正常时,它会转到paymentPage。这是一个预订系统!
问题是它没有验证。当我点击"创建成员"按钮我已经让它进入付款页面,它不应该,因为在名字和姓氏TextField中没有提供任何信息! 希望你能帮我 !!
此致 亚历
答案 0 :(得分:0)
我认为你的if语句是相反的。 如果任一字段为空,是否不希望它抛出异常?
而不是
if(firstname.getText().equals(""))
{
if(lastname.getText().equals(""))
{
}
else
{
throw new Exception();
}
}
else
{
throw new Exception();
}
我想你想要
if(firstname.getText().equals("") || lastname.getText().equals("")){
throw new Exception();
}
话虽如此,抛出一般例外并不是首选。与此同时,异常抛出在某种程度上是一个昂贵的流程执行明智。你可以改变你的代码,只返回一个是否经过验证的布尔值。然后检查返回值而不是抛出和捕获异常。只是一个想法。
答案 1 :(得分:0)
我把它改成了
if(methodName.getText().length() > 1)
{
}
问题在于,验证成功是空的......这太愚蠢了。