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

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

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

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

  3. комплект видеонаблюдения wifi видеокамеры комплект видеонаблюдения

  4. купить комплект видеонаблюдения беспроводной комплект камер видеонаблюдения

  5. лента стальная 0 7х20 мм лента нержавеющая купить

  6. We Advise You Let out Apartments In Dubai Apace And Safely.
    See The Best Deals, Prime Locations, And Complete Support From Our Experts.

  7. We Stop You Hole Apartments In Dubai Post-haste And Safely.
    Upon The Best Deals, Prime Locations, And Highest
    Submit to From Our Experts.

  8. We Supporter You Rent Apartments In Dubai Quickly And
    Safely. Gain The Most appropriate Deals, Prime
    Locations, And Full Stand From Our Experts.

  9. We Help You Charter out Apartments In Dubai Apace And Safely.
    See The Most artistically Deals, Prime Locations, And Full Submit to From Our Experts.

  10. лента стальная гост 3560 лента стальная нагартованная

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

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

  13. продвижение сайта поисковых системах александр продвижение сайта поисковых системах александр

  14. комплексное seo-продвижение интернет магазина заказать комплексное seo-продвижение интернет магазина заказать

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

  16. качественное продвижение сайта александр качественное продвижение сайта александр

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

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

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

  19. seo продвижение сайта компании москва александр seo продвижение сайта компании москва александр

  20. seo оптимизация и продвижение сайтов москва seo оптимизация и продвижение сайтов москва

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>