walnutmon
walnutmon

Reputation: 5953

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"/>

Upvotes: 8

Views: 4747

Answers (1)

skaffman
skaffman

Reputation: 403581

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}

Upvotes: 10

Related Questions