2011-07-13 86 views
0

如何在不將上下文解釋爲spel可解析值的情況下將字符串注入到應用上下文bean屬性中。將Spring Spel表達式注入到Bean屬性中

<bean id="x" p:spelExpression="${#code}/${#value}"/>

我想要的類的setter屬性有一個字符串參數,並創建一個可重複使用的SpelExpression作爲bean的私有財產,但是,Spring應用程序上下文似乎承認#variableName爲SPEL表達式並嘗試在初始化時解釋表達式。

我覺得Spel解釋是非常有用的,但也想在內部使用spel,並將表達式注入到我自己的bean中。

是否可以禁用對某個bean的Spel解釋,甚至可以禁用整個上下文文件(可能帶有某些名稱空間shenanigans),而無需禁用或修改整個應用程序上下文的spel表達式解析。

回答

0

#{...}是xml上下文中spel解釋器的標記。

我不忍:${#code}/${#value}。好的是#{code/value},據我所知,如果代碼都是id。

所以,如果你想要一個spel表達式而不解釋它,把字符串code/value放在xml中。

+0

這個問題與XML沒有任何關係。我希望能夠在使用SPEl表達式的應用程序上下文中創建一個bean。我不希望spel表達式被應用程序上下文解釋。這是爲了使用bean。例如,該bean將創建一個Expression,然後在循環中迭代一個集合調用expression.getValue(currentCollectionItem)。 – gbegley

+0

我不明白:你說它不是XML,我在你的問題中看到一個XML文本?如果沒有xml,但只有字符串,則將字符串拼寫表達式...在你的例子中,它是'code/value',或者'@ code/@val',取決於'code'和'value'。也許提供一些代碼(無xml?)? – Istao

+0

*它不是xml,它是生成字符串的模板解析器上下文。另一個例子是URL路徑,例如code = x,value = y會生成字符串'x/y'。問題的關鍵在於如何將字符串表達式注入到bean中,而不是將其作爲被評估的spel表達式來解析。 – gbegley

相關問題