2013-05-17 62 views
2

假設我有一個類MyClass,如下所示。Spring表達語言 - 調用getter

package com.classes.blabla;

public class MyClass 
{ 

    String myVar; 

public setMyVar(String myVar) 
{ 
    this.myVar = myVar; 
} 

public String getMyVar() 
{ 
    return myVar; 
} 

} 

現在我的問題:如何使用Spring表達式模板來引用MyClass的getter?

它是這樣的:

String value = "I am a String #{(com.classes.blabla.MyClass).getMyVar()}" 

任何幫助將不勝感激。由於提前

問候, 賀拉斯

+0

你能解釋一下你試圖使用它的上下文嗎?您需要引用該類的一個實例,而不僅僅是名稱。 –

+0

謝謝你的幫助加里。我嘗試使用的上下文是我有一個屬性文件,其中聲明瞭一個字符串,例如:my.string =「我是一個應該發生替換的字符串#{(com.classes.blabla.MyClass ).getMyVar()}」。 – Horace

回答

3

它仍然是不明確的正是你正在嘗試做的,但我會作出一些假設,也許我們可以一起進一步得到。如果你有...

<bean id="foo" class="com.classes.blabla.MyClass"> 
    <property name="myVar" value="bar"/> 
</bean> 

然後,您可以使用

< .... value="#{foo.myVar}" ... /> 

換句話說,你需要的MyClass一個instance之前,你可以從中提取價值。

如果你有一個屬性my.property=abC#{foo.myVar} xyz,您可以使用

< .... value="${my.property}" ... /> 

和值將成爲abc bar xyz

+0

嗨加里,Thx爲您提供支持。在你給出的例子中,表達式和屬性值在編譯時被解析。但我的目標是讓這些值在運行時解決。換句話說,我想在「my.property」中輸入的值在編譯時是不知道的。它在運行時確定,保存在myVar中,以便可以使用新的MyClass()。getMyVar()來訪問它。這就是爲什麼我試圖這樣做:my.property = abc#{instanceOfMyClass.getMyVar()} xyz。希望現在很清楚。如果沒有,我會給你一個代碼片段。再次感謝您 – Horace

+1

對不起 - 現在還不清楚 - 我的例子在編譯時沒有解決,它在上下文初始化期間解決了。請更詳細地更新您的問題,所以我不必猜測;謝謝。 –

+0

我想真正的問題是誰調用'setMyVar()',什麼時候調用。您可以以編程方式使用'SpEL'基礎設施('EvaluationContext','SpelExpression'等)。 –

0
String value = "I am a String #{(com.classes.blabla.MyClass).getMyVar()}" 

(com.classes.blabla.MyClass).getMyVar()用於靜態函數。

這裏沒有使用Myclass的bean。

下面會工作。

"I am a String #{myClassBean.getMyVar()}"會做