哪种技术可以在形式上验证多于1个字段的相等性?

时间:2018-03-20 03:46:52

标签: kotlin tornadofx

我有两个字段:用于密码和确认,并希望通过一些常见的验证器检查它们的相等性。 我怎样才能使它更有效?

private val model = object : ViewModel() {
    val password = bind { SimpleStringProperty() }
    val confirmPsw = bind { SimpleStringProperty() }
}

override val root = form {

    fieldset("Admin") {
        field("Set password and confirmation") {
            val tf1 = textfield(model.password) {
                promptText = "Place password"
                requestFocus()
            }.required()

            val pf1 = passwordfield(model.confirmPsw){
                promptText = "confirm password"
            }.required()

            button("set") {
                enableWhen { model.valid }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我用它做了什么(在大量的香烟和咖啡之后):

首先我们制作输入和检查密码的模型。

private val model = object : ViewModel() {
    val password = bind { SimpleStringProperty() }
    val confirm = bind { SimpleStringProperty() }
    // This makes boolean binding for control equality.
    val equal = booleanBinding(confirm, password) {
        confirm.value == password.value && confirm.value.isNotEmpty()
    }
}

然后我们可以将它用于按钮启用。

button("OK") {
    enableWhen { model.equal }
}

不确定这是最好的方式,但它确实有效。有没有更好的办法? (顺便说一句,我们也可以把它放在'片段中)