web-dev-qa-db-ja.com

Spring MVCアプリのJSPでプロパティファイルの値を表示する方法

私はapp-servlet.xmlで次のようなBeanを使用してプロパティを設定しています。

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

ほとんどの場合、コントローラーまたは次のような他のクラスのプロパティにアクセスします。

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

しかし、JSPファイルでプロパティを使用し、コントローラーをバイパスする場合はどうでしょう。意味モデルの属性としてコントローラーからJSPに値の型が渡されることは望ましくありません。

Jspでプロパティに直接アクセスする方法はありますか?

18
birdy

春の設定

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

jsp

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

また、単一のプロパティプレースホルダーでプロパティを検索することとは関係ありません。またはJava configを使用してPropertySourcesPlaceholderConfigurerをインスタンス化する場合は、環境オブジェクトを使用します。

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

これがあなたのProperties Fileです

site.name=Cool Bananas

そして、あなたの[〜#〜] jsp [〜#〜]

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

コンテキストでこれを行うだけです:

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

properties Beanを作成するために(彼の answer で@ nkjava.blogspot.comと同じ)。しかし、これはすべての作業が必要なわけではありません。

次に、このBeanをJSPに公開する必要があります。ビューリゾルバのタイプに応じて、これを行う方法はほとんどありません。 InternalResourceViewResolver の解決策があります。「exposeContextBeansAsAttributes」をtrueに設定し、「exposedContextBeanNames」に必要なBeanのリストを設定する必要があります。

tiles も解決策です。

JSPでこのBeanを単純に使用することができます。たとえばEL経由:

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

springバージョン4では、プロパティファイルが見つかります。

1)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)プログラムモード:

    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;

    }

出力:

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