2013-09-24 103 views
11

Có thể truy cập biến kiểu Chuỗi được xác định trong jsp từ một javascript trên cùng một trang không?Truy cập biến java từ javascript trên cùng một jsp

<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> 

Trong nhật thực tôi nhận được một lỗi

myVar cannot be resolved to a variable 
+1

đâu myVar của bạn được xác định? – kosa

+6

'<%' và '<% =' các khối được đánh giá theo thứ tự chúng được tìm thấy trên trang. Bạn cần phải đặt một trong đó tuyên bố 'myVar' trước khi một trong đó sử dụng nó. – millimoose

+5

Mặc dù, lý tưởng, bạn sẽ không sử dụng tập lệnh nào cả. – millimoose

Trả lời

21

này sẽ không làm việc kể từ khi bạn đang cố gắng sử dụng một biến không xác định. Mã được tạo như sau:

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

Không có ý nghĩa, đúng không? Vì vậy, để làm cho công việc này, bạn cần khai báo biến trước khi sử dụng nó (như mọi khi):

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

Tuy nhiên, sử dụng scriptlets là vô cùng nản. Giả sử bạn đang sử dụng JSTLExpression Language (EL), điều này có thể được viết lại để:

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

Nếu biến của bạn có ký tự như " bên trong, sau đó phương pháp này sẽ faile. Bạn có thể thoát khỏi kết quả bằng cách sử dụng <c:out> từ JSTL:

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

Thông tin thêm:

+1

Tôi không sử dụng JSTL ... –

+2

@VgeShi Tôi biết, đó là đề xuất. –

+2

Nếu myVar chứa "ký tự" thì không có cách nào an toàn để sử dụng nó mà không phải thoát khỏi các ký tự đó theo cách thủ công? – DonkeyKong

Các vấn đề liên quan