Я довольно новичок в тимелисте и не слишком опытен в весне. В моем контроллере
@Controller
@RequestMapping("form")
@SessionAttributes(types = {Root.class /** another type here**/})
public class FormController extends BaseController {
@ModelAttribute("errorMap")
public Map<String,Integer> getErrorMap(Root root, BindingResult bindingResult) {
Map<String,Integer> result = new HashMap<>();
result.put("somevalue",5); // pretend there are 5 errors for somevalue.
// some logic here processing bindingResult
}
@GetMapping
public void show(@Valid Root root)
// do nothing here, just show the page
}
...
}
public class BaseController {
@ExceptionHandler
void handleBindException( BindException bindException,
Model model, HttpServletRequest request,
HttpSession session) throws Exception {
model.addAllAttributes(bindException.getModel());
addModelAttributes(model, request, true, session);
}
@ModelAttribute
public final void addModelAttributes( Model model, HttpServletRequest request,
boolean isException, HttpSession session) throws Exception {
if(GET.matches(request.getMethod()) || isException)
addModelAttributes(model);
}
}
}
В моей форме. html есть эта часть
<div th:if="${errorMap['somevalue']}>0" class="error"> <!-- marked line -->
<sup th:text="${errorMap['somevalue']}" class="error"></sup>
</div>
Теперь, если нет ошибок проверки, все работает нормально, вызывается метод show(...)
и отображается 5
. Но если есть ошибка проверки, однако есть ошибка org.attoparser.ParseException: Exception evaluating SpringEL expression: "errorMap['somevalue']" (template: "form" - line 38, col 8)
, вызванная org.springframework.expression.spel.SpelEvaluationException: EL1012E: Cannot index into a null value
в отмеченной строке.
Я ожидаю, что это будет работать, особенно в случае ошибок проверки. Что я здесь не так делаю или неправильно понимаю?