2011-09-05 94 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