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. Профессиональные юридические услуги для физических и юридических лиц. Переходите по запросу юрист в Москве недорого. Вас ждут консультации, подготовка документов, защита интересов в суде, сопровождение сделок и решение спорных ситуаций. Поможем разобраться в сложных правовых вопросах быстро и эффективно, предложим оптимальные решения и обеспечим надежную правовую поддержку.

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

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

    Важно запоминать, яко наркомания лечится,
    и восстановление в правах дает шансище сверху новую жизнь.

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

  5. Риск от наркотиков — этто
    единая проблема, обхватывающая физиологическое, психологическое
    равным образом социальное здоровье человека.

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

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

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

  8. We Supporter You Let out Apartments In Dubai With all speed And Safely.
    See The Most appropriate Deals, Prime Locations,
    And Full Reinforce From Our Experts.

  9. флаг с логотипом на заказ где можно сделать флаг на заказ

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

  11. Хочешь оригинальную подушку? подушка дакимакура 150 50 комфорт и уют для сна. Длинная форма мягкий наполнитель и стильные принты. Отлично подходит для отдыха и расслабления.

  12. Нужен пластический хирург? https://plasticheskaya-hirurgiya-klinika.ru современные операции и эстетические процедуры. Опытные хирурги безопасные методики и индивидуальный подход. Консультации диагностика и качественный результат.

  13. Порча через наркотиков — этто комплексная хоботня, охватывающая физиологическое, психологическое и социальное состояние здоровья человека.

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

  14. Нужна мебель? купить мебель из массива эксклюзивные изделия из натурального дерева. Индивидуальный дизайн качественные материалы и точное изготовление. Решения для дома и бизнеса.

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

  16. We Help You Let out Apartments In Dubai Quickly And Safely.
    Find The Most appropriate Deals, Prime Locations, And Full Reinforce From Our Experts.

  17. All live match results https://live-score.com.az game information and data from the leading football leagues on one site. Up-to-date scores statistics and events for easy tracking.

  18. The site http://www.play-mods.com.az contains information about downloading PlayMods downloading PlayMods APK files compatibility with iOS Android and PC as well as basic information about GTA San Andreas and other modified games.

  19. Нужен ремонт электродвигателя? https://profremont.kz срочный ремонт и перемотка в Алматы от ПрофЭлектроРемонт-1: диагностика восстановление и запуск в минимальные сроки чтобы ваше производство не простаивало. Опытные мастера гарантия результата и использование качественных материалов — надежность которой можно доверять.

  20. Мнения игроков 1win отзывы — реальные отзывы о платформе бонусах и выводе средств. Узнайте о плюсах и минусах сервиса и сделайте правильный выбор.

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

  22. Реальные 1win отзывы игроков — честные мнения о работе сервиса. Узнайте о ставках бонусах выводе средств и надежности платформы.

  23. Честные 1win отзывы — плюсы и минусы сервиса опыт пользователей и оценки. Информация о выплатах бонусах и удобстве использования платформы.

  24. Настоящие 1win отзывы — опыт пользователей выплаты бонусы и работа сервиса. Полезная информация перед началом использования платформы.

  25. Актуальні новини https://lentalife.com поради та історії з усього світу. Дізнавайтеся про події тренди й корисні лайфхаки щоб залишатися в курсі та робити життя простішим і зручнішим щодня.

  26. мебель из массива премиальная мебель

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

  28. Впоследствии была отмечена
    повторная активность, в ходе
    которой пепловое облако достигло высоты 4,7 километра.

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>