2010-06-15 13 views
7

Dove nell'applicazione Spring-MVC/JSP si memorizzano le cose a cui è necessario accedere sia dai controller che dalle viste come base_url specifiche dell'ambiente, gli ID applicazione da utilizzare in javascript e così via?Spring MVC - JSP - Posiziona in memoria Costanti specifiche dell'ambiente

Ho provato a creare un bean con ambito applicazione e quindi <jsp:useBean> nella parte superiore del mio JSP, ma sembra non funzionare.

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

e di utilizzarlo nel modo seguente

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

Si prega di elaborare "non sembra di lavorare" di più in prospettiva dello sviluppatore di punto di vista di utente finale. Cosa succede esattamente e cosa no esattamente? Qualche errore/eccezione (nei registri)? – BalusC

+0

Ha detto che non è stato trovato un bean di tale scope, ha generato un'eccezione, ma non sono nemmeno sicuro se questo è il modo in cui si suppone di gestire un caso del genere, il tipo di eccezione è: java. lang.InstantiationException: bean spEnv non trovato nell'ambito scope – walnutmon

risposta

9

Che cosa è scope="application"? Questo è nuovo per me.

In ogni caso, se tutto ciò che serve è che i JSP siano in grado di accedere ai bean Spring, è possibile esporre i bean a JSTL utilizzando la proprietà exposedContextBeanNames di InternalResourceViewResolver. Per esempio:

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

e poi nel vostro JSP:

${myEnv.baseUrl} 
+0

scope = "application" - http://java.sun.com/products/jsp/tags/11/syntaxref11.fm14.html Questa è una caratteristica interessante del risolutore di viste , Ci proverò e risponderò alla risposta se funziona per me, grazie – walnutmon

+0

@jboyd: Ah, questa è una cosa JSP, non si applica a Spring. – skaffman

Problemi correlati