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

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

  1. Я лично потратил неделю на мониторинг а вдруг до меня дошло что удобнее всего иметь под рукой один толковый источник. И именно попался на глаза ресурс реально понятная структура. кухни от производителя каталог СПб https://zakazat-kuhnyu-nvd.ru Честно говоря даже не ожидал — и размеры указаны четко. Добавил в избранное чтоб было с чем сравнивать. И знаете очень помогло. Когда понятен ориентир голова не болит. Кстати вот этот материал — гляньте на досуге. И про столешницы — комплексный подход. Не торопитесь с выбором подойдите системно. Надеюсь найдете свой вариант

  2. Наркошоп Купить Бошки Шишки Мефедрон Кокаин

  3. Да уж ремонт — это та еще эпопея особенно когда доходит до гарнитура. Сам перерыл кучу вариантов поэтому отлично понимаю ваши терзания. Сосед посоветовал один салон но решил не доверять слухам. В общем когда встал вопрос где заказать кухню я выяснил что адекватный вариант — сразу у производителя. И это логично: можно внести правки по ходу дела да и отвечают за результат напрямую. Я например — когда листал портфолио обратил внимание на один нюанс. Идеально — съездить на производство. И кстати в этом источнике можно посмотреть цены. каталог кухонь под заказ каталог кухонь под заказ Там и фотки реальные — в общем хорошая база для старта. Я лично так и делал: потратил час на изучение спросил про акции и понял что это мое. Не ведитесь на первую же цену а подойдите к вопросу вдумчиво. Экономия нервов и денег обеспечена. Надеюсь найдете свой идеал

  4. Люди подскажите Отец не выходит из штопора Родственники не знают что делать Нужен врач прямо сейчас Короче единственный кто реально помог — наркологическая помощь на дому круглосуточно качественно Через пару часов человек пришёл в себя В общем телефон и цены тут — вызвать капельницу от запоя на дому https://alkogolizm.narkolog-na-dom-volgograd13.ru Нарколог на дом — это реальный выход Перешлите тем кто в такой же ситуации

  5. Гашиш москва Купить Бошки Шишки Мефедрон Кокаин

  6. Купить наркотики москва Купить Бошки Шишки Мефедрон Кокаин

  7. kasyno z wplata paysafecard blackjack online betting

  8. Вейп с тгк Купить Бошки Шишки Мефедрон Кокаин

  9. Где можно купить мефедрон Купить Бошки Шишки Мефедрон Кокаин

  10. Купить марихуана гашиш бошки Купить Бошки Шишки Мефедрон Кокаин

  11. п»їkasyno na prawdziwe pieniД…dze lotto moje konto

  12. Марихуана гашиш куплю Купить Бошки Шишки Мефедрон Кокаин

  13. total casino samowykluczenie jak wyłączyć kasyno online z blikiem kasyno mobilne polski

  14. Вейп с тгк Купить Бошки Шишки Мефедрон Кокаин

  15. Волгоград всем привет Отец не выходит из штопора Жена в истерике Нужен врач прямо сейчас Короче единственный кто реально помог — прокапаться на дому эффективно Дал рекомендации и успокоил семью В общем вся инфа по ссылке — вызвать анонимного нарколога https://zapoj.narkolog-na-dom-volgograd13.ru Нарколог на дом — это реальный выход Перешлите тем кто в такой же ситуации

  16. Люди подскажите Отец не выходит из штопора Жена в истерике Таблетки не помогают Короче врач приехал и поставил систему — нарколог на дом с выездом Дал рекомендации и успокоил семью В общем телефон и цены тут — нарколог на дом нарколог на дом Не ждите пока станет хуже Перешлите тем кто в такой же ситуации

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

  18. kasyno depozyt 5 zЕ‚ legalne polskie kasyno online bonus za rejestracje bukmacher

  19. Купить лирику в москве Купить Бошки Шишки Мефедрон Кокаин

  20. Have you ever thought about publishing an e-book or guest authoring
    on other sites? I have a blog based on the same topics you
    discuss and would really like to have you share some stories/information. I know
    my subscribers would enjoy your work. If you are even remotely interested, feel free to send me an email.

  21. Где купить альфа пвп Купить Бошки Шишки Мефедрон Кокаин

  22. kasa za granie w gry kasyno online z blikiem beep casino bonus

  23. Трамадол купить без рецепта Купить Бошки Шишки Мефедрон Кокаин

  24. kasyno legalne w polsce kasyno minimalny depozyt 10 zЕ‚ ranking najlepszych kasyn online

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>