简体   繁体   English

Hibernate Validator iterator.hasNext()无法正常工作

[英]Hibernate Validator iterator.hasNext() not working

I'm getting an infinite loop with the following code (hasNext() always seems to be true) 我正在使用以下代码进行无限循环(hasNext()似乎总是正确的)

 private final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
 private final Validator validator = factory.getValidator();
 Set<ConstraintViolation<SomeRequest>> reqErrors = validator.validate(request);

 StringBuilder sb = new StringBuilder();
 while(reqErrors.iterator().hasNext()){
       sb.append(reqErrors.iterator().next().getMessage() + "\n");
 }

 errors = sb.toString();

This works fine: 这很好用:

 for(int i = 0; i < reqErrors.size(); i++){
      sb.append(reqErrors.iterator().next().getMessage() + "\n");
 }

What am I missing here? 我在这里想念什么?

It's because you are calling (creating) iterator twice !! 这是因为您两次调用(创建)迭代器!

Just make it once, at the top and use it. 只需使其一次在顶部即可使用。

Iterator iterator = reqErrors.iterator();
while(iterator.hasNext()){
       sb.append(iterator.next().getMessage() + "\n");
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM