我在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中访问属性?
答案 0 :(得分:34)
春季配置
<util:properties id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere "/>
<context:property-placeholder properties-ref="propertyConfigurer" />
<强> JSP 强>
<spring:eval expression="@propertyConfigurer.getProperty('propertyNameHere')" />
答案 1 :(得分:17)
您还可以做的事情并不是在单个属性占位符中查找属性,或者如果您使用的是java配置并且只是实例化PropertySourcesPlaceholderConfigurer,则使用环境对象:
<spring:eval expression="@environment.getProperty('application_builtBy')" />
答案 2 :(得分:9)
<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>
答案 3 :(得分:0)
在上下文中这样做:
<util:properties
id="propertyConfigurer"
location="classpath:yourPropertyFileClasspathHere"
/>
<context:property-placeholder properties-ref="propertyConfigurer" />
用于创建属性bean(与answer中的@ nkjava.blogspot.com相同)。 但这不是所有工作都需要todo。
现在您需要将此bean公开给JSP。 有几种方法可以做到这一点,取决于视图解析器的类型。有InternalResourceViewResolver的解决方案 - 您需要将“exposeContextBeansAsAttributes”设置为true,并使用所需bean列表填充“exposedContextBeanNames”。
tiles也是解决方案。
您可以在JSP中简单地使用此bean。以EL为例:
${propertyConfigurer['my.string.from.prop.file']}
答案 4 :(得分:0)
<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>
----------------------------------------------------------------------------------------
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!!!!!
---------------------------------------------------------------------------------