Instead of creating a custom validator in the traditional sense I’m relying on JSR-303 annotations to specify validation constraints, because, it is the future, and I shouldn’t have to do a load of coding to specify common validation requirements like an email address regular expression or a numeric value that is required to be within a defined range.
Using Spring web flow, I found that binding error messages weren’t available when I called “<@spring.showErrors ‘<br/>’/>” in my freemarker view (after I had bound the field I wanted to show errors for of course).
So where are my error messages?
It turns out that Spring Web Flow has a different way of providing the user with feedback messages. The Spring Web Flow reference documentation says: “Spring Web Flow’s MessageContext is an API for recording messages during the course of flow executions”.
The message context (with all your binding error messages in it) can be found here: flowRequestContext.messageContext. I’ve written a couple of macros to make retrieving error messages from this object a little easier:
<#--
* Shows flow messages (which reside in flowRequestContext.messageContext)
*
* @param source Name of the field that caused the error
* @param severity String representation of org.springframework.binding.message.Severity
* @param separator the html tag or other character list that should be used to
* separate each option. Typically '<br>'.
* @param classOrStyle either the name of a CSS class element (which is defined in
* the template or an external CSS file) or an inline style. If the value passed in here
* contains a colon (:) then a 'style=' attribute will be used, else a 'class=' attribute
* will be used.
* @param tag The HTML tag to wrap the error in
-->
<#macro showFlowMessages source severity separator classOrStyle="" tag="">
<#assign messages = flowRequestContext.messageContext.getMessagesBySource(source)/>
<#if (messages?size > 0)>
<#list messages as message>
<#if message.severity?string == severity>
<#if classOrStyle == "" && tag == "">
${message.getText()}
<#else>
<#if classOrStyle == "">
<${tag}>${message.getText()}</${tag}>
<#else>
<#if tag == ""><#local tag = "span" /></#if>
<#if classOrStyle?index_of(":") == -1><#local attr="class"><#else><#local attr="style"></#if>
<${tag} ${attr}="${classOrStyle}">${message.getText()}</${tag}>
</#if>
</#if>
<#if message_has_next>${separator}</#if>
</#if>
</#list>
</#if>
</#macro>
<#--
* Shows flow messages (which reside in flowRequestContext.messageContext) in an ordered or unordered list
*
* @param source Name of the field that caused the error
* @param severity String representation of org.springframework.binding.message.Severity
* @param classOrStyle either the name of a CSS class element (which is defined in
* the template or an external CSS file) or an inline style. If the value passed in here
* contains a colon (:) then a 'style=' attribute will be used, else a 'class=' attribute
* will be used.
* @param ordered Whether or not the macro should output the list as an <ol> or <ul>
-->
<#macro showFlowMessagesList source severity classOrStyle="" ordered=false>
<#local errorsList><@showFlowMessages source, severity, "", "", "li" /></#local>
<#if errorsList?trim != "">
<#if classOrStyle == "">
<#local attr="">
<#elseif classOrStyle?index_of(":") == -1>
<#local attr=" class=" + classOrStyle>
<#else>
<#local attr=" style=" + classOrStyle>
</#if>
<#if ordered><ol${attr}><#else><ul${attr}></#if>
${errorsList}
<#if ordered></ol><#else></ul></#if>
</#if>
</#macro>
I’ve added these to my spring extensions, which you can download here: springx.ftl
Нужна бесплатная юридическая консультация? Переходите по запросу бесплатная юридическая консультация онлайн без номера телефона в Лобне и получите помощь опытных правозащитников в любой области права: семейные споры, долги и кредиты, недвижимость, трудовые конфликты, защита прав потребителей и многое другое. Задайте вопрос онлайн или по телефону и получите подробный разбор вашей ситуации и рекомендации адвоката по дальнейшим действиям. Консультация проводится бесплатно и конфиденциально.
Компания fastek https://fastek.by проектируем и поставляем надежные фасадные системы для коммерческих и жилых объектов обеспечивая долговечность энергоэффективность и безупречный внешний вид здания под ваши задачи.
стоматологическое отбеливание гигиена рта
Montenegro eco adventure https://www.tara-montenegro-rafting.me
как продавать эффективно на Авито https://www.prodazhi-na-avito.ru
We Stop You Hole Apartments In Dubai With all
speed And Safely. Find The Paramount Deals, Prime Locations, And Highest Stand From Our
Experts.
should I rent automatic car in Montenegro common car rental scams Montenegro tourists
We Supporter You Rent Apartments In Dubai Quickly And Safely.
Gain The Most appropriate Deals, Prime Locations, And
Enormously Submit to From Our Experts.
buy thc vapes in prague https://prague1shop.com
We Stop You Let out Apartments In Dubai Apace And Safely. Gain The Paramount Deals,
Prime Locations, And Full Reinforce From Our Experts.
We Help You Hole Apartments In Dubai Post-haste And Safely.
See The Best Deals, Prime Locations, And Complete Stand From Our Experts.
We Help You Let out Apartments In Dubai Quickly And Safely.
Find The Paramount Deals, Prime Locations, And Highest Support From Our Experts.
buy thc hashish in prague weed in prague
Купить земельный участок https://novoesonino.ru в коттеджном поселке «Новое Сонино». Земли ИЖС с электричеством дорогами и перспективой комфортного проживания за городом. Отличное место для строительства загородного дома в городском округе Домодедово.