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

  1. Всем привет из Самары. Беда в семье. Родственники не знают что делать. Платная клиника — бешеные цены. Короче реально крутые врачи — вывод из запоя с выездом круглосуточно. Через пару часов человек пришёл в себя. В общем жмите чтобы сохранить — выведение из запоя на дому выведение из запоя на дому Не ждите. Вдруг это спасёт чью-то жизнь.

  2. Салют Воронеж Тошнит трясёт сил нет Организм просто отказывается работать Короче единственное что реально спасает — капельница от похмелья недорого и качественно Через час состояние нормализовалось В общем вся инфа по ссылке — сколько стоит капельница на дому https://kapelnicza-ot-pokhmelya-voronezh-mnb.ru Не мучайтесь рассолами Перешлите тем кто в такой же ситуации

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

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

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

  6. автовышка характеристики автовышка чебоксары

  7. We ɑre a group of volᥙnteers and opening a new scheme in oᥙг commᥙnity.
    Your site proviԀed us with νaluablе information to work ߋn. You’ve done an impressive job and our
    whole community will be thanktul to you.

    Check out my blog post :: بازی انفجار

  8. I have been looking for a reliable breakdown like this for a while now and your post delivered exactly what I needed in a format that is both visually pleasing and intellectually satisfying to read through during my break. ass porno

  9. Доброго дня земляки. Мой брат уже шестой день в запое. Дети напуганы. Платная клиника — бешеные счета. Короче единственные кто приехал быстро — вывод из запоя на дому круглосуточно. Врач поставил систему. В общем вся инфа и контакты по ссылке — помощь вывода запоя нарколог 24 https://vyvod-iz-zapoya-na-domu-sankt-peterburg-qbf.ru Звоните прямо сейчас. Вдруг это спасёт чью-то жизнь.

  10. Кремация https://krematsiya-moskva.ru процесс сжигания тела человека после его смерти который в последнее время становится все более популярным в Москве. Многие люди выбирают этот способ прощания со своими близкими по различным причинам: от личных убеждений до практических соображений связанных с захоронением.

  11. I appreciate how this post manages to keep a well-balanced and conversational tone while still presenting the topic in a simple and smooth way which helps make the content feel more interesting and easier for readers to connect with naturally. zoophilia porno

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

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

  14. I loved as much as you will receive carried out right here.
    The sketch is tasteful, your authored material stylish.
    nonetheless, you command get got an impatience over that you wish be
    delivering the following. unwell unquestionably come further formerly again since exactly
    the same nearly very often inside case you shield this hike.

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

  16. Занимаешься сайтами? мониторинг SEO чтобы видеть реальный эффект продвижения важно ежедневно отслеживать позиции сайта в Google и Яндексе а не проверять их руками. Site Metrics Tool подключается к Google Search Console и Яндекс.Вебмастеру и в реальном времени показывает динамику позиций трафика и SEO-метрик — с отчётами где сразу видно что растёт а что проседает.

  17. Привет с Волги. Брат снова ушёл в завязку. Родные не знают за что хвататься. В бесплатную наркологию — стыд. Итог спасла эта служба — вывод из запоя дешево и без лишних трат. Через пару часов человек пришёл в норму. В общем вся инфа по ссылке — вывод из запоя с выездом https://vyvod-iz-zapoya-na-domu-samara-qzf.ru Не тяните. Киньте ссылку тем кто рядом с бедой.

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

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

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>