我需要指定字符串常量作爲屬性的值:如何在屬性春季
<int:header name="importedFilename" />
這裏「importedFilename」不應該被硬編碼而是從F.E.取來自Constants.IMPORTED_FILENAME_HEADER
靜態字段。有沒有辦法做到這一點? 「int」是Spring集成命名空間btw。此外,似乎沒有合適的bean定義替換int:header
,因此我不能使用<bean class="Header">...
。
我需要指定字符串常量作爲屬性的值:如何在屬性春季
<int:header name="importedFilename" />
這裏「importedFilename」不應該被硬編碼而是從F.E.取來自Constants.IMPORTED_FILENAME_HEADER
靜態字段。有沒有辦法做到這一點? 「int」是Spring集成命名空間btw。此外,似乎沒有合適的bean定義替換int:header
,因此我不能使用<bean class="Header">...
。
<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">
<int:header name="#{T(com.example.Constants).IMPORTED_FILENAME_HEADER}" />
應該工作(見http://docs.spring.io/spring/docs/3.0.x/reference/expressions.html#d0e11977)。
表達式更容易和無代碼,謝謝。 – JasonMing
我知道'util:constant'元素。當使用它時,問題是:如何在屬性中引用它,以便將它解釋爲id/ref到bean,而不是String本身?簡單的'name =「importedFilenameHeader」'和'name =「#importedFilenameHeader」'不起作用。 – yozh
我已經更新了我的答案,以顯示如何引用名爲'importedFilename'的標題的常量。 –
這是重點:我需要能夠從靜態字段配置標題的名稱,而不是值。 – yozh