2010-06-15 47 views
7

在Spring-MVC/JSP应用程序中,您将存储需要由控制器和视图(如特定于环境的base_url)访问的内容,要在JavaScript等?Spring MVC - JSP - 用于存储环境特定常量的地方

我试着创建一个应用程序范围的bean,然后在我的JSP的顶部<jsp:useBean>,但似乎没有工作。

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

,并用它按以下方式

<jsp:useBean id="myEnv" scope="application" type="com.myapp.MyAppEnvironment"/> 
+0

请详细说明“似乎并不奏效”,在比最终用户的角度来看,开发人员的角度更多。究竟发生了什么,究竟是什么?任何错误/异常(在日志中)? – BalusC 2010-06-15 16:16:15

+0

它说没有找到那个范围的bean,它抛出了一个异常,但我甚至不确定这是你应该如何处理这种情况,异常的类型是:java。 lang.InstantiationException:未在范围内找到bean spEnv – walnutmon 2010-06-15 16:51:46

回答

9

什么是scope="application"?这对我来说是新的。

无论如何,如果您只需要让您的JSP能够访问Spring bean,那么您可以使用InternalResourceViewResolverexposedContextBeanNames属性将bean暴露给JSTL。例如:

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

,然后在你的JSP:

${myEnv.baseUrl} 
+0

scope =“application” - http://java.sun.com/products/jsp/tags/11/syntaxref11.fm14.html 这是视图解析程序的一个有趣功能,我会试试这个,如果它对我有用,就会得到答案,谢谢 – walnutmon 2010-06-15 17:08:55

+0

@jboyd:啊,这是一个JSP的东西,它不适用于Spring。 – skaffman 2010-06-15 17:48:26