Проверьте Используя JSTL относительно Ошибки привязки Spring

Я пробовал это некоторое время, но не могу найти правильное решение.

Я хочу использовать JSTL, чтобы проверить, существуют ли какие-либо ошибки привязки (полевая ошибка или глобальная ошибка), это произошло в моем Spring MVC 2.5.

Я знаю, что могу использовать этот код:

<p>
    <spring:hasBindErrors name="searchItems">
        An Error has occured
    </spring:hasBindErrors>
</p>

Но я хочу использовать JSTL для проверки на любые ошибки.

Я попробовал это использование JSTL:

<c:if test="${not empty errors}">
    An Error has occured
</c:if>

Но кажется, что я не могу поймать его правильно.

Мне нужно к используемому JSTL, так как существуют другие части JSP, который полагается на присутствие или отсутствие ошибки привязки.

6
задан halfer 16 February 2018 в 13:25
поделиться

1 ответ

Как сказано

Я хочу использовать JSTL для проверки на наличие ошибок

Просто используйте (Он просто работает на Spring MVC 2.5 - не переносится для Spring MVC 3.0 хотя я полагаю это requestScope ['bindingResult. .allErrors'] )

<c:if test="${not empty requestScope['org.springframework.validation.BindingResult.<COMMAND_NAME_GOES_HERE>'].allErrors}">
    An Error has occured!!!
</c:if>

Имейте в виду по умолчанию имя команды не- квалифицированное имя класса команды с первой буквой в нижнем регистре . Обратите внимание, что имя команды ниже pet

private PetValidator petValidator = new PetValidator();

@RequestMapping(method.RequestMethod.POST)
public void form(Pet command, BindingResult bindingResult) {
    if(petValidator.validate(command, bindingResult)) {
        // something goes wrong
    } else {
        // ok, go ahead
    }
}

Итак, ваша форма должна выглядеть как

<!--Spring MVC 3.0 form Taglib-->
<form:form modelAttribute="pet">

</form:form>
<!--Spring MVC 2.5 form Taglib-->
<form:form commandName="pet">

</form:form>

Если вы не используете @ModelAttribute

@RequestMapping(method.RequestMethod.POST)
public void form(@ModelAttribute("command") Pet command, BindingResult bindingResult) {
    // same approach shown above
}

Таким образом, ваша форма должна выглядеть как

<!--Spring MVC 3.0 form Taglib-->
<form:form modelAttribute="command">

</form:form>
<!--Spring MVC 2.5 form Taglib-->
<form:form commandName="command">

</form:form>
6
ответ дан 8 December 2019 в 18:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: