2010-11-08 21 views
7

Ist es möglich, jstl in Javascript zu verwenden?jstl innerhalb Javascript

ich binden <c:set var="abc" value="yes"/>

und dann später auf diesen Wert in HTML zu setzen und einige Code auszuführen. Mein Problem ist das c: set wird immer ausgeführt, auch wenn die Javascript Bedingung falsch ist.

<script type="text/javascript"> 
var v1 = false; 
<c:set var"abc" value="yes"/> 

if(v1){ 
    <c:set var"abc" value="no"/> 
} 
</script> 

In dem obigen Code, auch wenn v1 'Nein' setzt auf abc falsch ist.

+2

Lesen Sie dieses: http://balusc.blogspot.com/2009/05/javajspjsf-and-javascript.html Auf den Punkt gebracht: Java/JSP/JSTL/EL läuft auf dem Webserver und erzeugt HTML/CSS/JS. Webserver sendet HTML/CSS/JS an den Webbrowser. Webbrowser ruft HTML/CSS/JS ab und führt es aus. Wenn Java seine Aufgabe richtig ausgeführt hat, sollte der Webbrowser keine Zeile Java/JSP/JSTL/EL-Code abgerufen haben. Einfach weil es das nicht versteht. – BalusC

+0

das war ein schöner Blog ... – coder247

Antwort

18

Es gibt keine Bedeutung für die Idee, "innerhalb von Javascript" zu sein, wenn Sie über serverseitige JSP-Interpretation sprechen. In Bezug auf diese Domain gibt es einfach kein Javascript.

So ja, es ist möglich, wenn Sie meinen, dass Sie so etwas wie

var something = '${abc}'; 

Hinweis tun mögen, die Sie mit der Quotierung und Sonderzeichen müssen vorsichtig sein. Die JSTL fn:escapeXml() Funktion ist nutzlos, wenn Sie eine JSP-Variable in einen Teil der Seite interpolieren, der vom Browser als Javascript-Quelle interpretiert wird. Sie können entweder eine JSON-Bibliothek verwenden, um Ihre Strings zu codieren, oder Sie können Ihre eigene EL-Funktion schreiben, um dies zu tun.

4

Dies ist ein ziemlich alter Thread, aber es ist einer, den ich stieß, als ich das gleiche Problem hatte. Da ich selbst an eine Lösung gedacht habe, werde ich sie hier posten, falls sie jemandem in der Zukunft hilft.

Die HTML-Datei (oder JSP) sucht nach dem Text in der externen Datei, die als JavaScript-Quelle deklariert ist.

Tomcat (oder ähnliche) interpretieren nur JSTL-Tags in Dateien mit der Erweiterung .jsp (oder vielleicht auch einige andere, aber für diese Antwort ist es irrelevant).

Also, Ihre js-Datei umbenennen es eine .jsp Erweiterung (javascript.js zum Beispiel javascript_js.jsp) geben

diese Zeilen an der Spitze javascript_js.jsp hinzufügen:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 

und einfach den Code unverändert lassen.

Natürlich müssen Sie auch weitere Präfixe hinzufügen, wenn Sie einen anderen als c: in der Kopfzeile verwenden.

Wenn Sie Eclipse verwenden (nicht über andere IDEs wissen), wird es annehmen, dass es keine Javascript-Datei ist und Sie verlieren das Farbschema für die verschiedenen Schlüsselwörter (var, function usw.), var name auto completion und automatische Einrückung.

die IDE zu täuschen, Sie

// <script> 

als js Kommentar vor dem eigentlichen Code (nach den "<% @" Erklärungen) hinzufügen können, und

// </script> 

am Ende der Datei, wieder als js Kommentar.

Es funktionierte für mich.

3
<script> 
    <c:set var="myVal" value="Hello"/> 

    var val1="${myVal}"; 

</script>