如何显示弹簧MVC应用程序从JSP属性文件值(How to show values from pro

2019-07-20 15:24发布

我设置我的财产在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访问属性的方法吗?

Answer 1:

Spring配置

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

JSP

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


Answer 2:

你也可以做什么,不配合你在一个单一的财产占位符查找性能,或者如果您使用的是Java的配置,只是实例化一个PropertySourcesPlaceholderConfigurer是使用环境对象:

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


Answer 3:

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

现在,这是你的属性文件

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>


Answer 4:

在上下文中只是这样做:

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

对于(他一样@ nkjava.blogspot.com创建属性豆答案 )。 但是,这还不是全部工作的需要待办事项。

现在,你需要公开这个bean来JSP。 很少有做到这一点的方式,取决于类型视图解析器。 没有为解决方案的InternalResourceViewResolver -你需要设置“exposeContextBeansAsAttributes”为真,并填写“exposedContextBeanNames”有需要的bean列表。

对于瓷砖也有解决方案。

比你可以简单地在你的JSP中使用这个bean。 通过EL,例如:

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


Answer 5:

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


文章来源: How to show values from property file in JSP in a spring MVC app