簡體   English   中英

在Play Framework 2.3中生成指向控制器操作的鏈接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM