错误消息中的变量

时间:2013-06-11 16:09:14

标签: wicket validation custom-validators

我有一个下拉框和一个TextField。文本字段的值必须以唯一编号开头,具体取决于选择。如果没有,将显示错误消息。

根据选择,错误消息如下所示:

“TextField”中的数字必须以101开头才能进行选择1

“TextField”中的数字必须以102开头才能进行选择2

我编写了一个自定义验证程序来验证TextField。

我不喜欢的是,对于每个错误,我都有一个资源键及其对应的错误消息值:

@Override
protected void onValidate(IValidatable<String> validatable) {

    if(selection.equals(selections1) && !beginsWithGoodNumber){
        error(validatable, "error.selection1");
    }else if(selection.equals(selections1) && !beginsWithGoodNumber){
        error(validatable, "error.selection2");
    }else if(selection.equals(selections1) && !beginsWithGoodNumber){
        error(validatable, "error.selection3");
    }
}
我在属性文件中的

error.selection1 = the number in the '${label}' must begin with 101 for selection1
error.selection2 = the number in the '${label}' must begin with 102 for selection2
error.selection3 = the number in the '${label}' must begin with 103 for selection3
error.selection4 = the number in the '${label}' must begin with 104 for selection4

我想在属性文件中有这样的东西:

error.selection = the number in the '${label}' must begin with {number} for {selection}

其中{number}{selection}是变量。

这可能吗?

感谢。

2 个答案:

答案 0 :(得分:1)

假设您的验证器扩展了AbstractValidator,您可以将变量Map传递给#error()。

或者参见AbstractRangeValidator,了解如何创建ValidationError,在其上设置变量并将其报告给组件。

答案 1 :(得分:0)

您可以设置ValidationError对象并在validatable.error方法上设置它。 ValidationError有一个设置变量的方法。