2013-02-27 17 views
16

sto impostando la mia proprietà in app-servlet.xml con un fagiolo come questo:Come mostrare valori da file di proprietà in JSP in una primavera MVC app

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
      <property name="location" value="/WEB-INF/my.properties"></property> 
    </bean> 

maggior parte del tempo ho accedere alle proprietà nei miei controllori o altre classi come questo:

@Value("${dbtype}") 
public String dbType; 

Ma cosa succede se voglio utilizzare una proprietà in un file JSP e bypassare il controller. Significato Non voglio che il tipo di valore venga passato dal controller al JSP come attributo di modello.

C'è un modo per accedere alle proprietà direttamente in un jsp?

+0

controllare questo link http://forum.springsource.org/showthread.php?96715-Reading-values-stored-in-properties-file-from-JSP – nav0611

risposta

31

Primavera config

<util:properties id="propertyConfigurer" 
        location="classpath:yourPropertyFileClasspathHere "/> 
<context:property-placeholder properties-ref="propertyConfigurer" /> 

jsp

<spring:eval expression="@propertyConfigurer.getProperty('propertyNameHere')" /> 
1

Nel contesto solo fare questo:

<util:properties 
    id="propertyConfigurer" 
    location="classpath:yourPropertyFileClasspathHere" 
/> 
<context:property-placeholder properties-ref="propertyConfigurer" /> 

per la creazione di proprietà del bean (lo stesso @ nkjava.blogspot. com nel suo answer). Ma questo non è tutto il lavoro necessario.

Ora è necessario esporre questo bean a JSP. Ci sono pochi modi per farlo, dipende dal tipo di risolutore di vista. C'è una soluzione per InternalResourceViewResolver - è necessario impostare "exposeContextBeansAsAribributes" su true e compilare "exposedContextBeanNames" con l'elenco dei bean richiesti.

Per tiles anche soluzioni.

Quindi puoi semplicemente utilizzare questo bean nel tuo JSP. Via EL per esempio:

${propertyConfigurer['my.string.from.prop.file']} 
11

Cosa si può anche fare che non ti legano a guardare le proprietà in un unico segnaposto di proprietà, o se si sta utilizzando Java config e solo un'istanza di un PropertySourcesPlaceholderConfigurer è utilizzare l'oggetto ambiente :

<spring:eval expression="@environment.getProperty('application_builtBy')" /> 
+0

Trovo questo più utile. Grazie – kakabali

8
<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
    id="messageSource" 
    p:basenames="WEB-INF/i18n/site" 
    p:fallbackToSystemLocale="false"/> 

Ora questa è la tua proprietà del file

site.name=Cool Bananas 

E qui va il JSP

<%@ taglib uri="http://www.springframework.org/tags" prefix="spring" %> 
<html> 
    <head> 
    <title><spring:message code="site.name"/></title> 
    </head> 
    <body> 
    </body> 
</html> 
+0

Grazie per aver specificato la dichiarazione della libreria di tag. Questo è omesso troppo spesso. – baraber

Problemi correlati