2011-09-05 112 views
15
基準定

我需要指定字符串常量作爲屬性的值:如何在屬性春季

<int:header name="importedFilename" /> 

這裏「importedFilename」不應該被硬編碼而是從F.E.取來自Constants.IMPORTED_FILENAME_HEADER靜態字段。有沒有辦法做到這一點? 「int」是Spring集成命名空間btw。此外,似乎沒有合適的bean定義替換int:header,因此我不能使用<bean class="Header">...

回答

22
<util:constant id="importedFilenameHeader" 
    static-field="your.package.Constants.IMPORTED_FILENAME_HEADER"/> 

然後,您應該能夠通過其ID(importedFilenameHeader)引用這在你的<int:header>元素可以使用像這樣:

<int:header name="importedFilename" ref="importedFilenameHeader"/> 

編輯:

你應該能夠使用SpEL來做到這一點。這是Spring的表達式語言,它在3.0中可用(也許2.5也是?)。

我覺得你可以去這樣做,那麼:然後

<util:constant id="importedFilenameHeader" 
    static-field="your.package.Constants.IMPORTED_FILENAME_HEADER"/> 
<int:header name="#{importedFilenameHeader}" ... /> 

春天應該評估這是我們在原來的部分定義的常量importedFilenameHeader(其中也包括在這個例子中)的值。

這裏是得到util命名空間的一些位置信息:

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/util 
    http://www.springframework.org/schema/util/spring-util-2.5.xsd"> 
+0

我知道'util:constant'元素。當使用它時,問題是:如何在屬性中引用它,以便將它解釋爲id/ref到bean,而不是String本身?簡單的'name =「importedFilenameHeader」'和'name =「#importedFilenameHeader」'不起作用。 – yozh

+0

我已經更新了我的答案,以顯示如何引用名爲'importedFilename'的標題的常量。 –

+0

這是重點:我需要能夠從靜態字段配置標題的名稱,而不是值。 – yozh