2010-06-14 50 views
0

我有一個structs動作對象實例,它從屬性文件中加載一個變量。我希望它只在第一次調用動作時發生,因此在進一步的執行過程中它從內存中讀取。任何提示?謝謝。在struts中只載入一次變量1動作類

回答

0

第一眼看到我這樣做至少有兩種方式:

1 - 讀取的值從屬性文件,並將其存儲在你的動作類的靜態字段。一個靜態的初始化器應該用來加載bundle並讀取值。當你的Action類被JVM加載時,你會得到你的價值,然後在那裏使用它。

public class YourAction extends Action { 
    private static String value; 
    static { 
    // value = load code here 
    } 
    ... 
} 

由於您沒有訪問Struts的能力,這是加載時我想你將不得不去的東西像下面讀你的價值:

ResourceBundle.getBundle("com/some/package/bundle").getString("some_key") 

2 - 有你的價值設置操作實例,並加載你的構造,後來只用它:

public class YourAction extends Action { 
    private String value; 
    public YourAction() { 
    super(); 
    //value = load code here 
    } 
    ... 
} 

這工作,因爲Struts使用一個動作實例來爲所有請求,所以所有請求W¯¯看不到你的價值(即Struts Action類不是線程安全的,它們像servlet一樣)。