Spring MVC - 将一个错误映射到多个字段

时间:2013-08-19 03:26:44

标签: java spring-mvc

在我的bean中,我有一个列表

List<SomeClass> values = new ArrayList<SomeClass>();

SomeClass{
 int a;
 int b;
 int c;
}

我的验证码 -

int i =0
for(SomeClass entry: values){
  if(entry.getA() < 0 && entry.getB() < 0 && entry.getC() > 0){
       bindingResult.addError(newFieldError("bean", "values[" + i"].a", values.get(i).getA(),false,new String []{"error.code"}, null, null));
  }
}

error.code映射到字符串“如果C大于零,则A和B必须大于零

问题是我想将错误代码映射到values[i].a以及values[i].b,以便在UI上突出显示这两个字段。

FieldError构造函数接受String field而非String [] fields

有没有办法为同一错误添加两个错误字段?

由于

1 个答案:

答案 0 :(得分:0)

一旦检测到要显示高亮显示多个字段的验证消息的条件,您可以使用以下代码显示公共/全局错误消息:

if ("your error condition"){
    errors.reject("your.error.code");
}

然后使用与应突出显示的字段对应的布尔标志更新模型。

model.addAttribute("xFieldHighlighted", true);
model.addAttribute("yFieldHighlighted", true);

然后使用JavaScript突出显示文件。下面的JQuery示例:

var xFieldHighlighted = '${xFieldHighlighted}';
var yFieldHighlighted = '${yFieldHighlighted}';

if (xFieldHighlighted == 'true'){
    $('#xFieldID').addClass('cssError');
}

if (yFieldHighlighted == 'true'){
    $('#yFieldID').addClass('cssError');
}