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,772 thoughts on “Spring Web Flow – displaying your JSR-303 validation messages using FreeMarker

  1. Полная статья здесь: программа по фото определяет калории

  2. Всем привет из Москвы Жесть полная Соседи уже вызвали полицию Скорая не приезжает на такие вызовы Короче спасла только госпитализация — наркологический стационар цена доступная Капельницы и уколы по назначению В общем жмите чтобы сохранить — наркологические центры москвы цены наркологические центры москвы цены Не ждите чуда Это может спасти жизнь близкого

  3. Нужна бесплатная юридическая консультация? Переходите по запросу помощь юриста бесплатно онлайн без телефона в Богородском и получите помощь опытных правозащитников в любой области права: семейные споры, долги и кредиты, недвижимость, трудовые конфликты, защита прав потребителей и многое другое. Задайте вопрос онлайн или по телефону и получите подробный разбор вашей ситуации и рекомендации адвоката по дальнейшим действиям. Консультация проводится бесплатно и конфиденциально.

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

  5. Оргстекло и акрил url в мебели создают эффект невесомости. Прозрачные стулья столики полки. Они не загромождают пространство идеальны для маленьких комнат. Акрил прочнее стекла не бьется. Легко царапается но полируется. Современный футуристичный вид. Сочетается с любыми стилями. Так комфортнее.

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

  7. Доброго дня земляки После вчерашнего вообще никак Рассол уже не лезет Короче единственное что реально спасает — капельница от похмелья быстрый результат Приехали через 30 минут В общем жмите чтобы сохранить — капельница от алкоголя на дому самара https://kapelnicza-ot-pokhmelya-samara-lmr.ru Капельница — это быстро и эффективно Перешлите тем кто в такой же ситуации

  8. whoah this blog is excellent i like studying your posts.
    Stay up the great work! You know, many persons are looking round for this information, you can aid them greatly.

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

  10. Люди подскажите Кошмар в семье Жена рыдает В диспансер тащить — последнее дело Короче врачи стационара реально вытащили — наркологический стационар с интенсивной терапией Врачи и медсёстры 24/7 В общем телефон и цены тут — наркологические стационары наркологические стационары Стационар — это единственный выход Это может спасти жизнь

  11. Слушайте кто знает Близкий человек уже 10 дней в запое Жена рыдает В диспансер тащить — последнее дело Короче врачи стационара реально вытащили — наркологическая клиника стационар с круглосуточным наблюдением Капельницы и уколы по схеме В общем жмите чтобы сохранить — наркологические стационары в москве https://narkologicheskij-staczionar-moskva-jmw.ru Не ждите пока станет хуже Перешлите тем кто в беде

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

  13. Hello! I could have sworn I’ve been to this web site before but after
    going through some of the posts I realized it’s new to me.
    Anyhow, I’m definitely happy I stumbled upon it and I’ll be bookmarking it and checking back often!

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

  15. Здорово народ Тошнит трясёт сил нет Нужно что-то серьёзное Короче единственное что реально спасает — капельница от похмелья быстрый результат Вернулся к жизни В общем не потеряйте контакты — дом запой цена https://kapelnicza-ot-pokhmelya-samara-dxq.ru Капельница — это быстро и эффективно Перешлите тем кто в такой же ситуации

  16. Здорова народ Близкий человек уже неделю в запое Дети напуганы до смерти Платная клиника — бешеные деньги Короче только стационар реально помог — платный наркологический стационар с палатами Провели полную детоксикацию В общем жмите чтобы сохранить — клиника наркологическая стационар москва https://narkologicheskij-staczionar-moskva-gsh.ru Стационар — это реальный шанс Это может спасти чью-то семью

  17. Здорова народ Отец не выходит из штопора Дети напуганы до смерти В диспансер тащить — страшно и стыдно Короче врачи вытащили с того света — госпитализация в наркологический стационар 24/7 Провели полную детоксикацию В общем не потеряйте контакты — наркология москва стационар https://narkologicheskij-staczionar-moskva-vex.ru Не надейтесь что само пройдёт Это может спасти чью-то семью

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

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>