Spring Web Flow – displaying your JSR-303 validation messages using FreeMarker

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

4,777 thoughts on “Spring Web Flow – displaying your JSR-303 validation messages using FreeMarker

  1. Здорово народ Сосед умирает на глазах Мать рыдает Никакие таблетки не помогают Короче врачи стационара вытащили — стационарное выведение из запоя под наблюдением Выписали через 5 дней без ломки В общем вся инфа по ссылке — детоксикация стационар https://vyvod-iz-zapoya-v-staczionare-nizhnij-novgorod-vby.ru Не ждите пока станет хуже Перешлите тем кто в такой же ситуации

  2. Доброго дня. Мой отец уже четвёртые сутки в запое. Родственники не знают что делать. Платная клиника — бешеные цены. Короче единственные кто быстро приехал — выведение из запоя на дому анонимно. Врач поставил систему. В общем жмите чтобы сохранить — лечение алкоголизма с выездом на дом https://vyvod-iz-zapoya-na-domu-samara-nxc.ru Не ждите. Перешлите тем кто рядом с бедой.

  3. Whats up guys Ive been looking for a decent and reliable gaming platform forever Lost my nerves completely trying to verify my accounts its honestly the only legit platform out there right now with an incredibly clean user interface and reliable license. Free spins and lucrative promos drop every single day. Anyway if you want to skip the research click to check the terms so you dont lose it ph365 ph365 This is the only provider that actually delivers on its promises definitely share this post with anyone whos still looking for a decent casino

  4. Здорова народ Ситуация жёсткая Рассол уже не лезет Короче врачи приехали и поставили систему — капельница от похмелья быстрый результат Вернулся к жизни В общем вся инфа по ссылке — капельница после запоя цена капельница после запоя цена Капельница — это быстро и эффективно Перешлите тем кто в такой же ситуации

  5. Здорово народ Жесть после вчерашнего Поилки и таблетки не помогают Короче единственное что реально спасает — капельница от похмелья на дому срочно Поставили капельницу с солевым раствором В общем вся инфа по ссылке — капельница от похмелья капельница от похмелья Не мучайтесь рассолами Перешлите тем кто в такой же ситуации

  6. Банкротство ООО — законный способ урегулировать задолженность и завершить деятельность компании с соблюдением требований законодательства. Переходите по запросу банкротство ООО без долгов. Юристы проведут анализ ситуации, разработают оптимальную стратегию, подготовят документы, защитят интересы директора и учредителей, а также сопроводят процедуру на всех этапах. Поможем минимизировать риски, избежать ошибок и добиться максимально безопасного завершения процесса.

  7. Всем привет с Волги. Отец не выходит из штопора. Мать в отчаянии. Платная клиника — деньги выкачивает. Короче реально профессиональные врачи — вывод из запоя дешево и качественно. Приехали через 35 минут. В общем жмите чтобы сохранить — вызов нарколога на дом запой https://vyvod-iz-zapoya-na-domu-samara-rtw.ru Звоните прямо сейчас. Перешлите тем кто рядом с бедой.

  8. Слушайте кто сталкивался Соседний дед совсем умирает Родственники в полной панике В диспансер тащить — страшно Короче спасла только госпитализация — лечение запоя в стационаре комплексно Врачи и медсёстры 24/7 В общем вся инфа по ссылке — вывод из запоя в стационаре наркологии вывод из запоя в стационаре наркологии Не ждите чуда Перешлите тем кто в такой же ситуации

  9. My slouse and I stumbled ovfer hee different pae andd thought I miggt chec things out.
    I like hat I seee sso noww i amm following you.
    Loook orward tto exploring your web pagge repeatedly.
    ofvd9wuaptfa57e91v52

  10. Всем привет из Питера Отец не выходит из комы Родственники в шоке В диспансер тащить — страшно Короче единственное что сработало — быстрый вывод из запоя в стационаре за 4 дня Врачи и медсёстры 24/7 В общем вся инфа по ссылке — выведение из запоя в стационаре спб https://vyvod-iz-zapoya-v-staczionare-sankt-peterburg-nhy.ru Стационар — единственное решение Перешлите тем кто в такой же беде

  11. Питер всем привет Муж просто потерял себя Соседи стучат в стену Скорая не приедет на такой вызов Короче только стационар реально помог — вывод из запоя в стационаре круглосуточно Выписали через 5 дней без ломки В общем жмите чтобы сохранить — вывод из запоя стационар спб https://vyvod-iz-zapoya-v-staczionare-sankt-peterburg-axm.ru Стационар — это реальный шанс Это может спасти чью-то семью

  12. Доброго времени земляки Ситуация критическая Мать плачет Платная наркология — бешеные счета Короче единственное что сработало — вывод из запоя в стационаре с полным обследованием Врачи и медсёстры круглосуточно В общем жмите чтобы сохранить — выведение из запоя больница https://vyvod-iz-zapoya-v-staczionare-sankt-peterburg-zqe.ru Звоните прямо сейчас Перешлите тем кто в такой же беде

  13. Way cool! Some very valid points! I appreciate you writing this
    write-up plus the rest of the site is extremely good.

  14. Всем привет из Питера Кошмар в семье Дети боятся заходить в комнату В диспансер тащить — последнее дело Короче спасла только госпитализация — вывод из запоя в стационаре с индивидуальным лечением Положили в палату В общем жмите чтобы сохранить — вывод из запоя в стационаре наркологии вывод из запоя в стационаре наркологии Звоните прямо сейчас Перешлите тем кто в беде

  15. Банкротство застройщика не означает потерю права на квартиру или вложенных средств. Переходите по запросу юридическая консультация по банкротству строительной компании. Юрист поможет включить требования в реестр кредиторов, защитить интересы дольщика, оспорить незаконные действия и добиться получения жилья или компенсации. Сопровождаем процедуру на всех этапах, готовим необходимые документы и представляем интересы клиента в суде. Консультация поможет определить оптимальную стратегию защиты именно в вашей ситуации.

  16. Hey everyone Tired of delayed withdrawals and silent customer support everywhere Lost my nerves completely trying to verify my accounts its honestly the only legit platform out there right now backed by great feedback on independent tracking forums. The service support replies in seconds via live chat Anyway if you want to skip the research check it out yourself through the official link ph365 ph365 Dont fall for those shady social media scams definitely share this post with anyone whos still looking for a decent casino

  17. Hola! I’ve been reading your website for a while now and
    finally got the bravery to go ahead and give you a shout out from
    Kingwood Tx! Just wanted to mention keep up the great
    job!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>