我正在定义一个名为“ version.tagx”的标签文件。该标签的职责是发出一个锚标签,其显示文本为应用程序的版本号。当前,文件的定义如下所示:
<jsp:root xmlns:c="http://java.sun.com/jsp/jstl/core" xmlns:fn="http://java.sun.com/jsp/jstl/functions" xmlns:spring="http://www.springframework.org/tags" xmlns:jsp="http://java.sun.com/JSP/Page" version="2.0"> <jsp:output omit-xml-declaration="yes" /> <jsp:directive.attribute name="render" type="java.lang.Boolean" required="false" rtexprvalue="true" description="Indicate if the contents of this tag and all enclosed tags should be rendered (default 'true')" /> <c:if test="${empty render or render}"> <spring:message code="global_version" /> <spring:url var="changelog" value="/resources/changelog.txt" /> <c:out value=": " /> <a href="${changelog}" title="Built by ${application_builtBy} on ${application_buildTime}">${application_version}</a> </c:if> </jsp:root>
我的应用程序是在Tomcat 7x容器中运行的Spring MVC应用程序。我的applicationContext.xml中有以下行
<context:property-placeholder location="classpath*:META-INF/spring/*_${spring.profiles.active}.properties,classpath:app-info.properties"/>
我已经通过遵循DEBUG日志消息确认了Spring发现了app-info.properties文件,并且(大概)该文件中的属性值已加载到我的运行时中。
这是日志消息
2012-05-09 23:45:24,237 [main] INFO org.springframework.context.support.PropertySourcesPlaceholderConfigurer - Loading properties file from class path resource [app-info.properties] 2012-05-09 23:45:24,237 [main] DEBUG org.springframework.core.env.MutablePropertySources - Adding [localProperties] PropertySource with lowest search precedence
这是我的app-info.properties文件的内容:
application_version=1.0 application_buildTime=05-04-2012 00:00:00 application_builtBy=me application_buildNumber=55
我想要的是让我的标签发出
Version: <a href="path/to/changelog.html" title="Built by me on 05-04-2012 00:00:00">1.0</a>
目前我得到的是:
Version: <a href="path/to/changelog.html" title="Built by on "></a>
有人知道实现此目标的方法吗?我应该尝试一种完全不同的方法来放弃所有属性文件吗?
在webmvc-config.xml中添加util:properties,其中/WEB- INF/spring/application.properties是属性文件的路径:
<util:properties id="applicationProps" location="/WEB-INF/spring/application.properties"/>
然后,只需在锚标记之前添加以下代码:
<spring:eval expression="@applicationProps['application_builtBy']" var="application_builtBy"/> <spring:eval expression="@applicationProps['application_buildTime']" var="application_buildTime"/> <spring:eval expression="@applicationProps['application_version']" var="application_version"/>
希望能帮助到你。