在Play1.2.4中Controller中的方法須要static修飾符號才能成爲一個Action。 因此像獲取pageNum和searchword參數時只可以在Action中定義臨時變量來存儲參數。這樣必然會存在大量重複的代碼,好比像下面兩個Action中就存在重複的代碼。安全
有n屢次我想把這幾個變量定義到BaseController中去,而後在Action中直接使用,但沒有成功。線程
這幾個變量應當爲Controller的私有屬性,不能使用static關鍵字進行修飾,可是Action又是使用static進行修飾的,無法操做私有屬性。blog
爲何這幾個變量不能使用static進行修飾?io
雖然使用static進行修飾以後程序看似彷佛沒有任何的問題。但實質上會存在線程安全問題,A看到搜索的結果多是由B輸入的關鍵詞搜索的結果,因此萬萬是不能使用static修飾Controller的私有屬性的。 固然能夠使用ThreadLocal來包裝這些變量使得程序變得線程安全,可是這樣的使用方式未免代價太大。變量
好在Play在以後的版本沒有使用static修飾Action ,這應該能夠讓Controller變得更加靈活。搜索