[SPRING] Freemarker 템플릿에 Spring MVC 유효성 검사 오류 표시
SPRINGFreemarker 템플릿에 Spring MVC 유효성 검사 오류 표시
컨트롤러가 바인딩 오류를 반환하면 내 freemarker 템플릿에 전역 유효성 검사 오류 목록을 표시하려고합니다. 필드와 관련된 오류를 표시 할 수 있지만 특정 빈에서 오류가 발생했을 때이를 감지하고 페이지 맨 위에 메시지를 표시하려고합니다. 출력이없는 아래 예제를 사용하여 시도했다.
<@spring.bind "webPage" />
....
<#if spring.status.error>
There were problems with the data you entered:
<ul>
<#list spring.status.errorMessages as error>
<li>${error?html}</li>
</#list>
</ul>
</#if>
제출 된 양식에 오류가 있음에도 불구하고 아래의 행은 항상 0을 반환합니다.
${spring.status.errorMessages?size}
내 컨트롤러 코드는 다음과 같습니다.
@RequestMapping(method = RequestMethod.POST)
public ModelAndView save(@ModelAttribute("webPage") @Valid WebPage page, BindingResult result, Model model) {
if (!model.containsAttribute("site")) {
throw new IllegalArgumentException("Model must contain site attribute.");
}
Site site = (Site) model.asMap().get("site");
if (!result.hasErrors() && !page.isNew()) {
this.pageService.save(page, site);
} else if (!result.hasErrors() && page.isNew()) {
this.pageService.create(page, site);
}
return createMav(result);
}
createMav 메소드는 다음과 같습니다.
public ModelAndView createMav(BindingResult result) {
ModelAndView mav = new ModelAndView();
mav.setViewName(getPrimaryControllerView());
mav.addAllObjects(result.getModel());
return mav;
}
Freemarker + Spring MVC를 사용하여 이것을 달성 할 수있는 방법이 있습니까?
해결법
-
==============================
1.표준 MVC JSP taglib을 사용하여이 작업을 수행하는 로터리 방식을 발견했습니다. 나는 이것을 Freemarker에게 제공한다 :
표준 MVC JSP taglib을 사용하여이 작업을 수행하는 로터리 방식을 발견했습니다. 나는 이것을 Freemarker에게 제공한다 :
<#assign form=JspTaglibs["http://www.springframework.org/tags/form"] />
다음 전역 오류 메시지를 표시하려면 다음 매크로를 사용하십시오.
<#macro formErrors> <#assign formErrors><@form.errors path="*" /></#assign> <#if formErrors?has_content> <div id="errors"> <@spring.message "admin.error.globalMessage" /> </div> </#if> </#macro>
나는이 에러 메시지가 나타나기를 원하는 위치에 다음 라인을 배치한다. (이것은 컨트롤러에 제출되는 폼 요소 내에 포함되어야한다.)
<@form.form method="POST" commandName="webPage"> <@formErrors /> .... </@form.form>
-
==============================
2.다음과 같이 작성할 수 있습니다.
다음과 같이 작성할 수 있습니다.
<#if spring.status.error> <ul> <#list spring.status.errors.globalErrors as error> <li>${error.defaultMessage}</li> </#list> </ul> </#if>
BindStatus 및 Errors 클래스에 대한 자세한 정보.
-
==============================
3.다음과 같이 시도해보십시오.
다음과 같이 시도해보십시오.
<@spring.bind "webPage" /> <#if (spring.status.errors.allErrors?size > 0) > <@spring.message "my.global.error.code"/> </#if>
-
==============================
4.http://static.springsource.org/spring/docs/current/spring-framework-reference/html/view.html#view-velocity-forms 문서를 참조하십시오. 그것은 당신이하고 싶은 것을 보여주는 예입니다.
http://static.springsource.org/spring/docs/current/spring-framework-reference/html/view.html#view-velocity-forms 문서를 참조하십시오. 그것은 당신이하고 싶은 것을 보여주는 예입니다.
from https://stackoverflow.com/questions/7556733/displaying-spring-mvc-validation-errors-in-freemarker-templates by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 보안 사용자 정의 sessionmanagementfilter 같은 주문 값 오류 (0) | 2019.04.11 |
---|---|
[SPRING] 무국적 스프링 MVC (0) | 2019.04.11 |
[SPRING] Struts 2와 Spring 스트럿츠 생성 객체 처리 방법 (0) | 2019.04.11 |
[SPRING] MockMvc를 통해 모든 요청에 대해 서블릿 경로를 설정하는 방법 (0) | 2019.04.11 |
[SPRING] Spring Ldap 인증 사용 방법 (0) | 2019.04.11 |