webentwicklung-frage-antwort-db.com.de

So zeigen Sie Werte aus der Eigenschaftendatei in JSP in einer Spring-MVC-App an

Ich setze meine Eigenschaften in app-servlet.xml mit einer Bohne wie folgt:

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

Meistens greife ich auf die Eigenschaften in meinen Controllern oder auf andere Klassen zu:

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

Was aber, wenn ich eine Eigenschaft in einer JSP-Datei verwenden und den Controller umgehen möchte. Das bedeutet, dass der Werttyp nicht als Modellattribut vom Controller an die JSP übergeben werden soll. 

Gibt es eine Möglichkeit, direkt in einem JSP auf Eigenschaften zuzugreifen?

18
birdy

Spring config

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

jsp

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

Was Sie auch tun können, bedeutet nicht, dass Sie nach Eigenschaften in einem einzelnen Platzhalter für Eigenschaften suchen müssen, oder wenn Sie Java-Konfiguration verwenden und nur einen PropertySourcesPlaceholderConfigurer-Instanziierer verwenden, verwenden Sie das Umgebungsobjekt:

<spring:eval expression="@environment.getProperty('application_builtBy')" />
16
Kieran
<bean class="org.springframework.context.support.ReloadableResourceBundleMessageSource" 
    id="messageSource"
    p:basenames="WEB-INF/i18n/site"
    p:fallbackToSystemLocale="false"/>

Jetzt ist dies Ihre Eigenschaftendatei

site.name=Cool Bananas

Und hier geht deinJSP

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

Im Kontext einfach das tun:

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

für das Erstellen von Properties bean (wie @ nkjava.blogspot.com in seiner answer ) . Dies ist jedoch nicht alles, was Sie tun müssen. 

Jetzt müssen Sie diese Bean für JSP freigeben. Es gibt nur wenige Möglichkeiten, dies zu tun, abhängig vom Typ des Ansichtsauflösers. Es gibt eine Lösung für InternalResourceViewResolver - Sie müssen "exposeContextBeansAsAttributes" auf "true" setzen und "exposedContextBeanNames" mit der Liste der erforderlichen Beans auffüllen. 

Für Fliesen sind auch Lösungen.

Dann können Sie diese Bean einfach in Ihrer JSP verwenden. Über EL zum Beispiel:

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

in der Frühlingsversion 4 finden Sie die Eigenschaftendatei:

1) XML-Modus

                <bean class="org.springframework.context.support.PropertySourcesPlaceholderConfigurer">
                   <property name="ignoreUnresolvablePlaceholders" value="true"/>
                      <property name="locations">
                          <list>
                            <!-- default resources folder (default package maven project) -->
                             <value>classpath:mongodb.remote.properties</value>  
                                <!-- Or in /WEB-INF/ folder -->
                              <value>/WEB-INF/mongodb.remote.properties</value>  
                          </list>
                      </property>
                  </bean>
----------------------------------------------------------------------------------------

2) programmatischer Modus:

    If you have for example this package : com.profile.config, com.profile.controller, ecc.. 
    it's not problem if you put only com.profile, it's ok !!! Now


    @Configuration
    @ComponentScan(basePackages = "com.profile")
    /** resources folder & default package maven project*/
    @PropertySource(value = { "classpath:mongodb.remote.properties" }) 
    public class MyPropertySourcesPlaceholderConfigurer {


        @Bean
        public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
            return new PropertySourcesPlaceholderConfigurer();
        }
    }


    ---------------------------------------------------------------------------------
    Your property file

    label.test.val=this is the property file value!!!!!
    ---------------------------------------------------------------------------------

    @Controller
    public class LabelsAndValuesController {


         @Value("${label.test.val}")
         String test;

    }

Ausgabe:

    ---------------------------------------------------------------------------------
    this is the property file value!!!!!
    ---------------------------------------------------------------------------------
0
Marco Pavon