1

「version.tagx」という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>

私のアプリケーションは、Tomcat7xコンテナーで実行されているSpringMVCアプリケーションです。applicationContext.xmlに次の行があります

<context:property-placeholder location="classpath*:META-INF/spring/*_${spring.profiles.active}.properties,classpath:app-info.properties"/>

DEBUGログメッセージをたどって、app-info.propertiesファイルがSpringによって検出され、(おそらく)そのファイル内のプロパティ値がランタイムにロードされていることを確認しました。

これがログメッセージです

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

私が欲しいのは私のtagxが放出することです

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>

誰かがこれを達成する方法を知っていますか?プロパティファイルをすべて一緒に使用しない、まったく異なるアプローチを試す必要がありますか?

4

2 に答える 2

4

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"/>

それが役に立てば幸い。

于 2012-05-27T23:47:12.460 に答える
1

また、単一のプロパティプレースホルダーでプロパティを検索する必要はありません。または、Java構成を使用していて、PropertySourcesPlaceholderConfigurerをインスタンス化するだけの場合は、環境オブジェクトを使用します。

<spring:eval expression="@environment.getProperty('application_builtBy')" />
于 2015-01-20T14:46:10.633 に答える