Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring MVC - JSP - Place to Store Environment Specific Constants

Where in the Spring-MVC/JSP application would you store things that need to be accessed by both the controllers and views such as environment specific base_url's, application ids to be used in javascript and so on?

I've tried creating an application scoped bean and then <jsp:useBean> at the top of my JSPs, but that doesn't seem to be working.

   <!-- Environment -->
    <bean id="myEnv" class="com.myapp.MyAppEnvironment" scope="application">
        <property name="baseUrl" value="http://localhost:8080/myapp/"/>
        <property name="videoPlayerId" value="234346565"/>
    </bean>

And using it in the following manner

<jsp:useBean id="myEnv" scope="application" type="com.myapp.MyAppEnvironment"/>
like image 206
walnutmon Avatar asked Jun 15 '10 16:06

walnutmon


1 Answers

What is scope="application"? That's a new one to me.

Anyway, if all you need is for your JSPs to be able to access Spring beans, then you can expose the beans to JSTL using the exposedContextBeanNames property of InternalResourceViewResolver. For example:

<bean id="myEnv" class="com.myapp.MyAppEnvironment">
    <property name="baseUrl" value="http://localhost:8080/myapp/"/>
    <property name="videoPlayerId" value="234346565"/>
</bean>

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="exposedContextBeanNames">
      <list>
         <value>myEnv</value>
      </list>
   </property>
</bean>

and then in your JSP:

 ${myEnv.baseUrl}
like image 137
skaffman Avatar answered Oct 17 '22 21:10

skaffman