web-dev-qa-db-ja.com

生のhtmlをPlayフレームワークビューに渡す方法は?

Play Frameworkアプリ内のビューに単純なURLを渡そうとしていますが、文字列として渡されると、URLの_&_が_&_に変更され、URLが機能しなくなります。

引数をHtmlに変更すると、つまり@(url: Srting)から@(url: Html)に変更すると、URLを文字列としてview.render()メソッドに渡そうとするとエラーが発生します。

URLをHtmlに変換して、そのように渡すにはどうすればよいですか?

22
Click Upvote

ビューの動的コンテンツで発生するデフォルトのエスケープを防ぐには、String@Html(String)関数でラップする必要があります。

見る:

@(url: String)
<div class="myLink">
   Go to: @Html(url) <br>
   not to: @url
</div>

コントローラ:

public static Result displayLink(){
   return ok(view.render("<a href='http://stackoverflow.com/'>Stack Overflow</a>"));
}

詳細については、ドキュメントの テンプレートエンジン ページを参照してください(具体的には、一番下の「エスケープ」セクション)。

36
estmatic

HTMLコンテンツを生のテキストとして表示する代わりにレンダリングする場合は、コンテンツ.as("text/html")を返します。例:

WS.url("http://www.stackoverflow.com").get().map(resp => Ok(resp.body).as("text/html"))
5
Hanxue