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

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

  1. Онлайн женский журнал https://zhenskiy.kyiv.ua статьи о красоте здоровье моде и любви. Советы тренды и полезный контент для женщин любого возраста.

  2. Актуальные новости https://ktm.org.ua Украины онлайн. Последние события аналитика экономика происшествия и международные отношения. Только проверенная информация и важные обновления в режиме реального времени.

  3. Reminder: if youre planning to boost engagement always choose gradual delivery when you buy instagram views and likes—spikes that happen too fast can trigger audits.

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

  5. Скрипты ответов в Instagram для повышения конверсии предоставляют основу для предсказуемого и эффективного диалога с подписчиками на каждом этапе воронки продаж. Конкурентная среда социальных сетей требует чтобы мессенджеры отвечали не только быстро но и с учётом предыдущей истории общения и типа вопроса клиента. Эта практика включает подготовку вариативных ответов на часто задаваемые вопросы о доставке качестве ценах и способах оплаты а также использование триггер-сообщений которые срабатывают после определённых действий пользователя в сети. Менеджеры применяющие структурированные скрипты сообщают о повышении конверсии из Direct в покупку на 25-40 процентов в течение первого месяца. Для команд из 2-5 человек это означает возможность обслуживать в 2-3 раза больше потенциальных клиентов с тем же уровнем профессионализма.

  6. Email-маркетинг для малого бизнеса полный гайд раскрывает фундаментальные принципы работы одного из самых эффективных каналов коммуникации с аудиторией. Малые предприятия часто недооценивают потенциал email как инструмента для построения лояльности и увеличения повторных продаж полагаясь исключительно на социальные сети и контекстную рекламу. Материал подробно объясняет механику работы email-кампаний включая сегментацию подписчиков персонализацию сообщений и аналитику открытий и кликов. Вы узнаете почему email демонстрирует самый высокий ROI среди всех маркетинговых каналов и как правильная стратегия рассылок компенсирует затраты на софт и сервисы. Для собственников и маркетологов малого бизнеса это ценный ресурс для построения долгосрочных отношений с клиентами без зависимости от алгоритмов платформ.

  7. Калибровочные гири для весов нужного класса точности и номинальной массы для калибровки весов.
    В нашей компании можно купить поверочные гири классов точности E1, E2, F1, F2, M1, M2.
    Чем выше класс точности, тем меньше будет разница между номинальным и действительным значениями массы калибровочной гири.

  8. Ущерб через наркотиков — этто сложная хоботня, обхватывающая физическое,
    психологическое равным образом соц состояние здоровья человека.
    Употребление подобных наркотиков, как снежок, мефедрон,
    ямба, «наркотик» или «бошки», может
    родить ко необратимым последствиям
    яко чтобы организма, так (а) также чтобы среды в
    течение целом. Хотя хоть при развитии связи возможно восстановление — главное, чтобы зависимый
    явантроп обернулся за помощью.
    Важно запоминать, яко наркомания лечится, и
    оправдание бацнет шансище
    на новую жизнь.

  9. Риск через наркотиков — этто единая проблема, обхватывающая физическое, психологическое
    также общественное здоровье человека.
    Употребление таких наркотиков, как снежок, мефедрон, гашиш, «шишки» или «бошки», что ль родить
    буква неконвертируемым последствиям яко чтобы организма, так и чтобы мира
    в целом. Но хоть при выковывании
    подневольности возможно восстановление — главное, чтобы зависимый человек
    устремился согласен помощью. Эпохально памятовать, яко
    наркозависимость лечится, а также восстановление в правах одаривает шанс на новую жизнь.

  10. Wonderful items from you, man. I’ve keep in mind your stuff previous to and you’re simply extremely wonderful.
    I really like what you’ve received here, really like what you are saying and the way
    in which through which you are saying it. You’re making it
    entertaining and you continue to take care of to stay it sensible.

    I cant wait to learn far more from you. That is actually a great website.

  11. I needed to thank you for this excellent read!! I definitely loved every little bit
    of it. I’ve got you saved as a favorite to look at new stuff you post…

  12. Have you ever considered writing an e-book or guest authoring on other sites?
    I have a blog based on the same subjects you discuss and would love to have you share
    some stories/information. I know my readers would enjoy your work.

    If you’re even remotely interested, feel free to shoot me
    an e-mail.

  13. Специалисты компании выполнят изготовление этикеток любого формата и сложности: тканых жаккардовых, деревянных, металлических, кожаных и проч.
    Чтобы хлопковы бирки для одежды не утратили своего первоначального вида и были износостойкими, мы используем только качественные материалы.

  14. Te joci pe PlayStation? joc PlayStation Cele mai a?teptate ?i deja populare jocuri cu un gameplay excelent grafica puternica ?i mecanica unica. Afla ce proiecte merita aten?ia ta chiar acum.

  15. interesat de Gladiatus? Joc Gladiatus Creeaza un erou lupta in arena completeaza misiuni ?i imbunata?e?te-?i echipamentul. Alatura-te miilor de jucatori ?i devino un gladiator legendar in acest popular RPG bazat pe browser.

  16. Cel mai bun joc Secrete World of Warcraft Un MMORPG legendar cu o lume deschisa vasta unde te a?teapta batalii epice progresul personajelor ?i misiuni palpitante. Exploreaza Azeroth alatura-te breslelor ?i devino parte a unei pove?ti grandioase.

  17. Iti place entuziasmul? jocuridenoroc.top Cazinouri online case de pariuri ?i sali de jocuri de noroc licen?iate. Cele mai bune jocuri de noroc online.

  18. We Advise You Charter out Apartments In Dubai Quickly And Safely.
    Find The Most appropriate Deals, Prime Locations, And Enormously Support From
    Our Experts.

  19. Покупка шаблона «Аспро Максимум» — быстрый способ запустить мощный интернет-магазин на 1С-Битрикс без долгой разработки. Переходите по запросу смотреть демо шаблон Аспро Максимум. Вы получите готовую структуру, адаптивный дизайн, продуманный каталог и встроенные инструменты для продаж и SEO. Решение легко настраивается под задачи бизнеса и помогает выйти на рынок в кратчайшие сроки.

  20. Консультацию психолога https://психолог38.рф в Иркутске можно получить в центре Психолог38. Здесь работают высококвалифицированные специалисты: детские психологи клинические семейные и индивидуальные. Мы собрали профессионалов разных направлений чтобы комплексно подходить к решению запросов клиентов. Бережно деликатно с научным подходом. Сложные ситуации в нашей жизни встречаются не редко и своевременная помощь поддержка очень важна. Находясь среди людей легко можно оказаться в одиночестве один на один со своими проблемами. Если вы ищите лучших психологов которые реально помогают людям обратите внимание на нашу организацию.

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>