[英]Play Framework 2.5 - Using “@” when generating html code in controller (html.apply)
[英]Generating a link to a controller action in Play Framework 2.3
我正在使用Play應用程序,需要在調用控制器操作的混合Scala-HTML視圖中生成鏈接。 幾年前我發現這個問題與我的情況類似,但提供的答案對我不起作用。
元素是在循環中生成的,所以我不能手動將參數插入控制器動作,但我嘗試過的任何東西都沒有用。 這是我現在的路線:
ID: @{var fhirID = <processing for ID>; <a href='@routes.Users.fhirUserDetails(fhirID)'>fhirID</a>}
我之前鏈接的問題的公認答案也有效地使用了這個結構:
<a href='@routes.Application.show("some")'>My link with some string</a>
我的問題是雙重的:
1)如何將變量fhirID傳遞給控制器動作? 我生成的鏈接只有文本“fhirID”而不是語句第一部分生成的文本。
2)@ routes.Users語法是否正確? 當我單擊生成的鏈接時,它會嘗試在/myapp/@routes.Users.fhirUserDetails(fhirID)中呈現頁面。
我意識到我可能在這里遺漏了一些非常基本的東西 - 感謝任何建議!
問題似乎不是@routes
語法(你完全正確),而是一個Twirl引擎無法看到代碼結束和HTML開始的情況(或者類似的東西......)
你包含的行,包含var
和分號,讓我懷疑這一點,並且當我使用那種風格時我能夠重現這個問題。
我的建議是使用@defining
幫助器而不是var
來獲取用於鏈接的范圍變量,如下所示:
ID: @defining(<processing for ID>) { fhirID =>
<a href='@routes.Users.fhirUserDetails(fhirID)'>fhirID</a>
}
如果需要,你可以根據需要深入嵌套@defining
塊,盡管如果有很多邏輯的話,可以更好地調用可重用的塊。 我認為這種風格使得更易讀的模板,而且看起來更像是“真正的Scala”:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.