web-dev-qa-db-fra.com

Comment afficher les valeurs d'un fichier de propriétés dans JSP dans une application MVC printanière

Je configure mes propriétés dans app-servlet.xml avec un bean comme celui-ci:

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

La plupart du temps, j'accède aux propriétés de mes contrôleurs ou d'autres classes comme ceci:

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

Mais que se passe-t-il si je veux utiliser une propriété dans un fichier JSP et contourner le contrôleur. Cela signifie que je ne souhaite pas que le type de valeur soit transmis du contrôleur à la JSP en tant qu'attribut de modèle. 

Existe-t-il un moyen d'accéder aux propriétés directement dans un jsp?

18
birdy

Config de printemps

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

jsp

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

Ce que vous pouvez également faire ne vous oblige pas à rechercher des propriétés dans un espace réservé de propriété unique, ou si vous utilisez la configuration Java et instanciez simplement un PropertySourcesPlaceholderConfigurer, utilisez l'objet environment:

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

Maintenant ceci est votre Fichier de propriétés

site.name=Cool Bananas

Et voici votreJSP

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

Dans le contexte, faites ceci:

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

pour la création du bean Properties (identique à @ nkjava.blogspot.com dans son answer ) . Mais ce n’est pas tout le travail à faire. 

Vous devez maintenant exposer ce bean à JSP . Il existe peu de façons de le faire, cela dépend du type de résolveur de vue. Il existe une solution pour InternalResourceViewResolver -, vous devez définir "exposeContextBeansAsAttributes" sur true et renseigner "exposureContextBeanNames" avec la liste des beans requis. 

Pour tuiles sont aussi une solution.

Alors vous pouvez simplement utiliser ce haricot dans votre JSP. Via EL par exemple:

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

dans Spring version 4, vous trouverez le fichier de propriétés:

1) mode xml

                <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) mode programmatique:

    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;

    }

sortie:

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