我设置我的财产在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访问属性的方法吗?
Spring配置
<util:properties id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere "/>
<context:property-placeholder properties-ref="propertyConfigurer" />
JSP
<spring:eval expression="@propertyConfigurer.getProperty('propertyNameHere')" />
你也可以做什么,不配合你在一个单一的财产占位符查找性能,或者如果您使用的是Java的配置,只是实例化一个PropertySourcesPlaceholderConfigurer是使用环境对象:
<spring:eval expression="@environment.getProperty('application_builtBy')" />
<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>
在上下文中只是这样做:
<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']}
在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!!!!!
---------------------------------------------------------------------------------