我必須在Web項目上使用Play框架,在該框架中我必須將視圖與控制器類連接起來。這意味着,我必須使用在控制器(scala)中聲明的方法(scala.html)。 我真的不知道如何。 我試過類似在視圖中使用控制器方法 - 播放框架 - 斯卡拉
@controller.class.method()
但它沒有工作。 我查過它,但什麼都沒發現,也許是因爲它太簡單了,任何人都會問這個問題..?
我很感激幫助。
我必須在Web項目上使用Play框架,在該框架中我必須將視圖與控制器類連接起來。這意味着,我必須使用在控制器(scala)中聲明的方法(scala.html)。 我真的不知道如何。 我試過類似在視圖中使用控制器方法 - 播放框架 - 斯卡拉
@controller.class.method()
但它沒有工作。 我查過它,但什麼都沒發現,也許是因爲它太簡單了,任何人都會問這個問題..?
我很感激幫助。
您可以通過以下方式訪問模板中的反向路線:
@routes.controllersFolder.MyControllerName.endPointName
這將解析爲路線。
如路線文件:
GET /myApp/endpointExample controllersFolder.MyControllerName.endPointName
所以
@routes.controllersFolder.MyControllerName.endPointName
將解析:
/myApp/endpointExample
如果您正在尋找使用在客戶端的AJAX我會強烈推薦JSRoutes。
如果你想有一個控制器的功能,那麼你應該有它的模塊,如分離:
trait MyTrait {
def add(x: Int, y: Int): Int = x + y
}
@Singleton
class MyClass with MyTrait
@Singleton
class MyController @Inject() (myClass: MyClass) extends Controller {
def endPointName(x: String, y: String): Action[AnyContent] = {
try {
Ok(
Json.toJson(
Json.obj(
"result" -> myClass.add(
x = x.toInt,
y = y.toInt
)
)
)
)
} catch {
case e: NonFatal => BadRequest(
Json.toJson(
Json.obj(
"error" -> e.getMessage
)
)
}
}
}
然後,您可以參考MyClass的邏輯,而不必形成一個請求,去耦邏輯像這樣:
在HMTLmyView.scala.html
@Singleton
class MyOtherController @Inject() (myClass: MyClass) extends Controller {
def myHtmlPage(): Action[AnyContent] = {
views.html.myView(myClass)
}
}
:
@(myClass: MyClass)
@myClass.add(1, 2) // = 3
我希望這有助於 里斯
如果你想調用視圖控制器,你應該用reverse routes
的幫助下做假設你的路線是這樣的
GET /hello/:name controllers.Application.hello(name)
在視圖定義,你可以叫它使用下面的代碼
@routes.Application.hello("test")
祝你好運
你能不能給您所想要達到的目的的例子嗎? – sarcan