2013-02-07 9 views
21

Sto provando a passare un semplice URL a una vista all'interno di un'app framework di gioco, tuttavia quando viene passato come stringa, lo & nell'URL viene modificato in & che causa il mancato funzionamento dell'URL.Come passare HTML grezzo per riprodurre la vista del framework?

Se cambio l'argomento in Html, cioè @(url: Srting) in @(url: Html), viene visualizzato un messaggio di errore quando cerco di passare l'url come stringa al metodo view.render().

Come posso convertire l'URL in Html e passarlo così?

risposta

33

Per evitare il default sfuggire ciò accade per il contenuto dinamico sulle viste è necessario avvolgere il String con @Html(String) funzione:

Vista:

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

Controller:

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

Vedi The template engine pagina sulla documentazione per maggiori informazioni (in particolare la sezione "Escaping" in fondo).

+0

Dove è necessario inserire questa annotazione? All'interno del controller? –

+0

E ora, nel mio controller, sto facendo: 'String url = SomeModel.getUrl(); return ok (myView.render (url)); '. Dove dovrei inserire l'annotazione '@html()'? –

+0

@ClickUpvote controlla l'esempio modificato spiega tutto. – biesior

5

Se si desidera eseguire il rendering di contenuto HTML anziché visualizzarlo come testo non elaborato, restituire il contenuto .as("text/html"). Esempio:

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