2

我是 javafx 的新手。想要创建具有开箱即用验证的简单表单。由于图书馆选择了 JideFX。尝试重复展示(这对我来说很糟糕) - http://www.jidesoft.com/jidefx/JideFX_Validation_Developer_Guide.pdf。只有 StackOverflowError 作为结果。验证器被调用。如果验证没问题,也不例外。

使用 javafx-8、Java 8、Eclipse Luna、JideFX 0.9.1(也尝试过 0.9.1-b128)。你有什么建议吗?代码如下。

SimpleValidator.java

public class SimpleValidator implements Validator {

    @Override
    public ValidationEvent call(ValidationObject param) {
        if (param.getNewValue() != null
                && !param.getNewValue().toString().isEmpty()) {
            return ValidationEvent.OK;
        } else {
            return new ValidationEvent(ValidationEvent.VALIDATION_ERROR, 1,
                    "Error");
        }
    }
}

登录控制器.java

public class LoginController {

    private static final Logger LOGGER = LoggerFactory
            .getLogger(LoginController.class);

    @FXML
    private TextField idField;
    //...
    @FXML
    private void initialize() {
        ValidationUtils.install(idField, new SimpleValidator());
    }

    public LoginController() {
        super();
    }
//...
}
4

3 回答 3

2

您可以尝试FXForm2,它为您提供了快速构建酷表单的简便方法。此外,您还有一个验证功能。在这里检查样品

于 2014-10-12T20:17:49.087 回答
0

我已经研究了一下,显然当您将消息传递给时会发生这种情况ValidationEvent

return new ValidationEvent(ValidationEvent.VALIDATION_OK); //no error
return new ValidationEvent(ValidationEvent.VALIDATION_OK, 9999); //no error
return new ValidationEvent(ValidationEvent.VALIDATION_OK, 9999, ValidationEvent.FailBehavior.IGNORE); //no error
return new ValidationEvent(ValidationEvent.VALIDATION_OK, 9999, "teste"); //error
return new ValidationEvent(ValidationEvent.VALIDATION_OK, 9999, "teste", "teste"); //error

return new ValidationEvent(ValidationEvent.VALIDATION_OK, 9999, ValidationEvent.FailBehavior.IGNORE, "teste");

这可能与TooltipEx 导致 stackoverflow #22有关

因此,如果您可以不使用验证消息...

如果我发现更多,我会更新这个

于 2015-05-05T20:55:44.367 回答
0

我遇到了同样的错误。似乎 JideFX 已经死了。

请改用 ControlsFX 验证。

于 2015-10-28T12:37:56.843 回答