我正在维护一个应用程序,在几个100个Jsps和tagx文件中我需要替换一些硬编码字符串 - 替换值将从已经读入的属性文件驱动。
正在读取我的spring mvc app中的属性文件:
<context:property-placeholder location="classpath*:someProps.properties, someOther.properties" />
没有可以添加的id属性,我无法通过id获取值,因此该选项已经用完。
internet的唯一解决方案是声明PropertiesFactoryBean
,然后使用spring eval读入jsp / tagx。像这样:
<bean id="applicationProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="singleton" value="true" />
<property name="properties">
<props>
<prop key="database.name">${database.name}</prop>
</props>
</property>
</bean>
如果我需要阅读很多值(这个应用程序很快就会出现这种情况),这很快就会变得很麻烦。有没有其他方法可以在jsp / tagx文件中读取属性文件中的属性? 它还有助于我理解是否有人可以告诉我PropertiesFactoryBean和context:property-placeholder之间的区别?
Spring version 3.2.2.RELEASE
答案 0 :(得分:1)
您可以通过propertyplaceholder在jsp中获取属性值,并在jsp中使用spring标记:在您的上下文中xml:
<!-- PropertyPlaceHolder -->
<util:properties id="propertyConfigurer" location="WEB-INF/test/someProps.properties"/>
<context:property-placeholder properties-ref="propertyConfigurer"/>
在你的jsp中:
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
...
<spring:eval expression="@propertyConfigurer.getProperty('your.property1')" />
答案 1 :(得分:0)
您可以尝试i18n,在spring-servlet.xml中添加配置信息:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<!-- properties path -->
<property name="basename" value="messages" />
<property name="useCodeAsDefaultMessage" value="true" />
在jsp文件中,您只需添加:<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
然后你可以从.propertise文件中获取值,例如:
<spring:message code="hello" arguments="111,222" argumentSeparator=",">
祝你好运!