2012-10-04 50 views
2

我使用Playframework 2.0(scala版本),我想在我的控制器之一中覆蓋「BadRequest」方法。 我控制器延伸的特點:Playframework:覆蓋BadRequest

package controllers 

import play.api._ 
import play.api.mvc._ 
import play.api.libs.json.JsValue 
import play.api.libs.json.JsObject 

/* 
* Simple trait to factor common code used by all controllers... 
*/ 
trait AbstractController extends Controller { 
// Personal useful methods 
// ... 
// Implementation of an override of BadRequest ? 
} 

我的控制器:

package controllers 

import play.api._ 
import play.api.mvc._ 
import play.api.Play.current 
import play.api.libs.json._ 
import play.api.libs.json._ 
import play.api.libs.concurrent.Promise 

object MyController extends AbstractController 
{ 

def myFunc (s: String) = { 
    BadRequest(s) // should return what I'll define in MY BadRequest implementation 
    } 
} 

我想要做什麼:執行錯誤請求的新的行爲舉止(即錯誤返回細節JSON)的控制器擴展AbstractController。 播放文檔建議在全局對象(擴展GlobalSettings)中執行該操作並覆蓋onBadRequest方法。但我不想要一個如此全局的方法......只能在特定的控制器中使用。

什麼是最佳解決方案?

感謝您的幫助。 Greg

回答

1

我真的不知道問題在這裏。重寫它有什麼問題?

trait AbstractController extends Controller { 
    override val BadRequest = ... 

} 
+0

金,你是對的,我犯了一個錯誤:使用* def *而不是* val *。 – Greg