2013-09-24 13 views
11

jspで定義されたString型の変数に、同じページのjavascriptからアクセスできますか? Eclipseで同じjspのjavascriptからJava変数にアクセス

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=windows-1255"> 
<title>Insert title here</title> 
<script type="text/javascript"> 
foo(); 
function foo() 
{ 
var value = "<%=myVar%>"; 
alert(value); 
} 
</script> 
</head> 
<body> 

<% 

String myVar="blabla"; 
%> 

</body> 

</html> 

私はあなたが未定義の変数を使用しようとしているので、これは動作しませんエラーに

myVar cannot be resolved to a variable 
+1

をあなたはJSTLから<c:out>を使用して、結果を逃れることができますか? – kosa

+6

'<%'と '<%='ブロックは、ページ上で見つかった順に評価されます。 'myVar'を宣言するものの前に' myVar'を宣言するものを置く必要があります。 – millimoose

+5

理想的には、スクリプトレットはまったく使用しませんが。 – millimoose

答えて

21

を取得しています。コードは次のように生成されます:

... = myVar; 
//... 
String myVar = "blabla"; 

正しくはありませんか?

<% 
    String myVar="blabla"; 
%> 
<script type="text/javascript"> 
    foo(); 
    function foo() { 
     var value = "<%=myVar%>"; 
     alert(value); 
    } 
</script> 

はまだ、スクリプトレットの使用量がで極めてを落胆:だから、この作品を作るために、あなたは(いつものように)それを使用する前に、変数を宣言する必要があります。あなたの変数は内部"、このアプローチの意志faileのような文字が含まれている場合は

<c:set name="myVar" value="blabla" /> 
<script type="text/javascript"> 
    foo(); 
    function foo() { 
     var value = "${myVar}"; 
     alert(value); 
    } 
</script> 

:あなたはJSTLExpression Language(EL)を使用していると仮定すると、これはに書き換えることができます。

var value = "<c:out value='${myVar}' />"; 

詳細情報:あなたのmyVarには定義されて

+1

私はJSTLを使用していません... –

+2

@VgeShi知っている、それはお勧めでした。 –

+2

myVarに "文字が含まれている場合はどうなりますか?そのような文字を手動でエスケープしなくても安全に使用できますか?" – DonkeyKong

関連する問題