2010-06-15 91 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