2009-08-26 6 views
42

In Grails (< 2.3), wenn ich grails.views.default.code='none' in den Grails Config.groovy verlasse, liegt es an mir, meine Ausdrücke explizit in HTML zu kodieren die GSP-Dateien: ${myValue?.encodeAsHTML()}.Überschreiben von grails.views.default.codec = 'html' config zurück zu 'none'

Wenn ich grails.views.default.codec='html" im Config.groovy gesetzt, dann geschieht die HTML-Codierung automatisch für jeden Ausdruck: ${myValue}.

Meine Frage: Wenn ich den Standard auf 'html' setze, wie komme ich zurück zu 'none' für einen Ausdruck, wenn ich nicht die HTML-Codierung Verhalten will?

Antwort

6

Wenn Standard-Kodierung Stufe eingestellt zu erklären, um mit Hilfe von HTML

grails.views.default.Codec = "html"

dann für die HTML-Codierung für einen Ausdruck in einer Seite zu entfernen können Sie

verwenden

$ {raw (Ausdruck)}

+0

Nur für Grails > = 2.3 siehe http://mrhaki.blogspot.fr/2013/11/grails-goodness-generating-raw-output.html. Die Frage zielt auf Grails <2.3. Siehe John Flinchbaugh Antwort unten. – BenC

1

Ich kann eine Lösung haben. Ich bin mir nicht sicher, wie akzeptiert es ist.

Ich kann den Standard-Codec für Ausdrücke auf HTML festlegen, aber dann <% = myValue%> Notation in GSP anstelle von $ {} -Ausdrücken verwenden, um die nicht skalierten Werte auf die Seite zu bekommen.

+0

Sie haben mehr gesagt als das in deiner anderen Antwort. Dieser fügt nichts hinzu. – cdeszaq

+0

@cdeszaq Schauen Sie sich die Daten an. Die vollere Antwort war später. (Und sie waren beide von 2009 (und Ihr Kommentar war ein Jahr vor mir).): | –

+0

@CharlesWood Mein Punkt ist, dass diese minderwertige Antwort gelöscht werden sollte. Ich entschuldige mich dafür, dass ich das nicht klarer gemacht habe. – cdeszaq

4

Von GRAILS-1827 sieht es aus wie Sie den Standard-Codec für eine bestimmte Seite mit

<%@ defaultCodec="HTML" %> 

oder

<%@page defaultCodec="HTML" %> 

in einigen Versionen überschreiben können (siehe die referenzierte Ausgabe).

+0

Dies sieht gut aus für die Überschreibung pro Seite. –

62

Um die verschiedenen Ebenen, auf denen zusammenfassen der Codec angewendet werden kann:

Set Config.groovy des grails.views.default.codec='html' HTML auf allen ${expressions} in der Anwendung standardmäßig bekommen zu entkommen.

Dann, wenn Sie eine ganze Seite zurück zu keiner auf die Standard möchten, verwenden Sie die Direktive:

<%@page defaultCodec="none" %> 

oder

<%@ defaultCodec="none" %> 

Um HTML-Codierung für einen Ausdruck in einer Seite zu deaktivieren, die andernfalls in Verzug zu HTML, verwenden Sie <%=expression%> Schreibweise statt ${...}.

+0

Verwenden Sie die Seitenanweisung ist gut. –

+9

Diese Lösung funktioniert nicht mehr. Stattdessen müssen Sie die 'rohe' Methode verwenden: '$ {row (expression)}' –

+0

Ich muss dies mit neuen Grails wiederholen. Sie haben es wahrscheinlich viel einfacher gemacht. –

1

Ihren eigenen Tag schreiben und den Ausdruck direkt in den Ausgabestream schreiben:

class YourTagLib { 

    static namespace = "x" 

    def unescaped = { attrs, body -> 
     out << attrs.value 
    } 

} 

es in Ihrem GSP Verwendung:

<x:unescaped value="${yourexpression}"/> 
7

Versuche $ mit {raw (myValue)}, was Sie tun nicht brauchen Seite Codecs etc

Verwandte Themen