Spring MESSAGE and THEME Tags

Spring Tag Library

Spring MVC provides a JSP tag library (Spring Form) for making it easier to bind form elements to Model data. Spring Framework also provides you with some tags for evaluating errors, setting themes and outputting internationalized messages.

also read:

Syntax to use Spring tag library

	<%@taglib  uri="http://www.springframework.org/tags" prefix="spring">

Spring Message and Theme tags

-This tag provides internationalization support using MessageSource interface which provides functionality to retrieve messages.If “code” isn’t set or cannot be resolved, “text” will be used as default message.

-This tag is used to retrieve a theme message in the scope of the current page.Messages are looked up using the ApplicationContext’s ThemeSource.

Example for and tags

1.Modify the web.xml to configure the Dispatcher Servlet.

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.htm</welcome-file>
        </welcome-file-list>
    </web-app>

2.Create an dispatcher-servlet.xml file which contains all the configuration beans to handle the user requests.It handles the user request and dispatches to respective controllers.

Here create two beans which are instances of ResourceBundleThemeSource and ResourceBundleMessageSource class loads the property files.

dispatcher-servlet.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>

 <bean id="themeSource" class="org.springframework.ui.context.support.ResourceBundleThemeSource">
</bean>

	<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
        <property name="basename" value="messages"/>
		</bean>

  <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
         <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
            </props>
        </property>
    </bean>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />

    <!--
   The Index Controller
    -->

	 <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />

</beans>

3.Create a Jsp file index.jsp which contains the spring message and theme tag.

index.jsp


<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Welcome to Spring Web MVC project</title>
        <link rel="stylesheet"  href='<spring:theme code='default'/>' type="text/css"/>

   </head>

    <body >

       <h2>Hello this is the blue theme</h2>
       <spring:message code="message.header"/>

    </body>
</html>

4.Create properties file theme.properties which contains the css file location. Here we used two keys ‘default’,’blue’ and their corresponding css files.

default=themes/default.css
blue=themes/blue.css

5.Create properties file messages.properties which contains the messages with their corresponding keys. These messages are retrieved from the page using spring:message tag.

message.header=Welcome to Java Beat

6.Creating two Style Sheets default.css and blue.css these style sheets are located from the properties file and gets loaded to the currnet page when request is made. spring:theme tag can be used to retrieve the theme.

also read:

default.css

body{
    background-color:#DDDDDD;
}

blue.css

body{
    background-color:#3333FF;
}

Comments

comments

About Krishna Srinivasan

He is Founder and Chief Editor of JavaBeat. He has more than 8+ years of experience on developing Web applications. He writes about Spring, DOJO, JSF, Hibernate and many other emerging technologies in this blog.

Comments

  1. Hi Sir,
    here i am using below tag for spring i81n is it possible with this

    instead of below one

    let it me clarify..

Speak Your Mind

*