web-dev-qa-db-ja.com

JavaScriptからJSP変数を読み取る

JavaScriptからJSP変数を読み取り/アクセスするにはどうすればよいですか?

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

または

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

または完全な例

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

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

</script> 
</head> 

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

</html>

注:レンダリングする前に入力をサニタイズします。XSSの可能性の多くが開かれる可能性があります

77
Jigar Joshi

私が知る限り、最もクリーンな方法:

  1. jSP変数をHTML要素のdata- *属性に追加します
  2. 必要に応じて、Javascriptを介してこの値を読み取ります

このSOページに関する現在のソリューションに関する私の意見:実際のJavaScriptコード内でJavaスクリプレットを使用して「直接」JSP値を読み取ることは、おそらく最もうんざりすることです。吐き出したい。ハハ。真剣に、それをしないようにしてください。

JSPのないHTMLパーツ:

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

JSPを使用する場合のHTMLパーツ:

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

Javascript部分(簡単にするために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>

そして、これが実際に動作するのを見るためのjsFiddleです http://jsfiddle.net/6wEYw/2/

リソース:

23
Adrien Be

HTMLドキュメントでJavaScriptについて話していると仮定します。

JSPに関してはテキストを出力し、ページに関してはHTMLドキュメントを取得するだけなので、直接これを行うことはできません。

JavaScriptを生成して変数をインスタンス化する必要がありますJSで特別な意味を持つ文字をエスケープするように注意してください。 (他の回答で提案されているように)データをダンプするだけの場合、データに新しい行や引用符などが含まれていると、データが転倒することがわかります。

これを行う最も簡単な方法は、JSONライブラリを使用することです( http://json.org/ の一番下にリストされている束があります)。次に、JSP出力を取得します。

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

これにより、次のようにアクセスできるオブジェクトが得られます。

myObject.someProperty

jSで。

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

まず、Javaスクリプトはクライアント側のスクリプト言語であり、jspはアクセスできないサーバー側の言語であり、サーバーで要求を受信した後にのみサーバーに要求を送信することなく、クライアント側の言語の変数を処理しますクライアント側の言語変数にアクセスするため、リクエストを通過する方法しかありません

別のことは、「これらの変数をサーバーに送信する方法」には2つのオプションがあるということです...隠しフィールドを使用するか、jsのユーザーwindow.locationオブジェクト......

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

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

その後、jspでクライアント側のデータにアクセスできます