web-dev-qa-db-de.com

Eine JSP-Variable aus JavaScript lesen

Wie kann ich eine JSP-Variable über JavaScript lesen/darauf zugreifen?

55
Siddiqui
alert("${variable}");

oder

alert("<%=var%>");

oder volles Beispiel

<html> 
<head>
<script language="javascript"> 

function access(){ 
  <% String str="Hello World"; %>
   var s="<%=str%>"; 
   alert(s); 
} 

</script> 
</head> 

<body onload="access()"> 
</body> 

</html>

Hinweis: Wenn Sie die Eingabe vor dem Rendern bereinigen, werden möglicherweise viele XSS-Möglichkeiten eröffnet 

73
Jigar Joshi

Der sauberste Weg, soweit ich weiß:

  1. fügen Sie Ihre JSP-Variable zum data- * -Attribut eines HTML-Elements hinzu
  2. lesen Sie diesen Wert dann bei Bedarf über Javascript ab

Meine Meinung zu den aktuellen Lösungen auf dieser SO - Seite: Das Lesen von "direkten" JSP-Werten mithilfe von Java-Scriplet im eigentlichen Javascript-Code ist wahrscheinlich das Ekelhafteste, das Sie tun könnten. Lässt mich kotzen. Haha. Ernsthaft, versuche es nicht.

Der HTML-Teil ohne JSP:

<body data-customvalueone="1st Interpreted Jsp Value" data-customvaluetwo="another Interpreted Jsp Value">
    Here is your regular page main content
</body>

Der HTML-Teil bei Verwendung von JSP:

<body data-customvalueone="${beanName.attrName}" data-customvaluetwo="${beanName.scndAttrName}">
    Here is your regular page main content
</body>

Der Javascript-Teil (zur Vereinfachung von jQuery):

<script type="text/JavaScript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.js"></script>
<script type="text/javascript">
    jQuery(function(){
        var valuePassedFromJSP = $("body").attr("data-customvalueone");
        var anotherValuePassedFromJSP = $("body").attr("data-customvaluetwo");

        alert(valuePassedFromJSP + " and " + anotherValuePassedFromJSP + " are the values passed from your JSP page");
});
</script>

Und hier ist das jsFiddle, um dies in Aktion zu sehen http://jsfiddle.net/6wEYw/2/

Ressourcen:

22
Adrien Be

Angenommen, Sie sprechen in einem HTML-Dokument von JavaScript.

Sie können dies nicht direkt tun, da für die JSP Text ausgegeben wird und für die Seite nur ein HTML-Dokument abgerufen wird.

Sie müssen JavaScript-Code generieren, um die Variable instanziieren zu können, . Achten Sie darauf, Zeichen mit besonderer Bedeutung in JS zu umgehen. Wenn Sie nur die Daten sichern (wie in einigen anderen Antworten vorgeschlagen), werden Sie feststellen, dass sie umkippen, wenn die Daten neue Zeilen, Anführungszeichen usw. enthalten.

Der einfachste Weg, dies zu tun, ist die Verwendung einer JSON-Bibliothek (es gibt ein Bündel am Ende von http://json.org/ ) und dann die JSP-Ausgabe:

<script type="text/javascript">
    var myObject = <%= the string output by the JSON library %>;
</script>

Dadurch erhalten Sie ein Objekt, auf das Sie wie folgt zugreifen können:

myObject.someProperty

in der JS.

12
Quentin
   <% String s="Hi"; %>
   var v ="<%=s%>"; 
6
user467871

Zunächst einmal ist das Java-Skript eine clientseitige Skriptsprache, während jsp eine serverseitige Sprache ist, auf die Sie nicht zugreifen können. Sie verarbeitet jede Variable der clientseitigen Sprache auf der Serverseite, ohne eine Anforderung an den Server .__ Seitensprachenvariablen Es gibt also nur eine Möglichkeit, die Anforderung zu durchlaufen

eine andere Sache ist, dass "wie man diese Variable an den Server sendet" es gibt zwei Optionen ... Entweder verwenden Sie das ausgeblendete Feld Oder das user window.location Objekt von js ......

`window.location.replace("home.jsp?nm="+v);`
`<%String name=request.getParameter("nm");%>`

window.location.href("home.jsp?nm="+v);
<%String name=request.getParameter("v");%>

dann können Sie unter jsp auf clientseitige Daten zugreifen