2011-11-25 178 views
18

Ello there,將JSP變量賦值給JSP JSP中的變量

我想將一個javascript變量的值賦值給一個java變量。但我不知道如何做到這一點?例如說我有這樣的:

<html> 
<head> 
    <script type="text/javascript"> 
     function return variable(){ 
      var a = "hello"; 
      return a; 
     } 
    </script> 
</head> 
<body> 

<% 
    //The java code 
    String b = //how do I get that javascript variable here? 
%> 

</body> 
</html> 
+3

如果你瞭解jsp是如何工作的,那麼你會知道java部分在''before'之前的服務器端執行,頁面在瀏覽器中呈現。這意味着它已經執行到任何JavaScript有機會執行的時候。所以你需要重新思考你在這裏做什麼。 –

+0

可能的重複:http://stackoverflow.com/questions/1944330/assigning-values-from-javascript-to-java-variable –

+0

可能的重複[如何將JavaScript值傳遞給JSP中的Scriptlet?](http:/ /stackoverflow.com/questions/5701031/how-do-i-pass-javascript-values-to-scriptlet-in-jsp) – cHao

回答

17

Java腳本在瀏覽器上播放,其中java代碼是服務器端的東西,所以你不能簡單地這樣做。

你可以做的是形式提交,或使用URL參數或使用AJAX調用從JavaScript提交計算變量的服務器,然後就可以使其可在服務器上

HTML

<input type="hidden" id="hiddenField"/> 

確保該領域奠定下<form>

的Javascript

01在服務器
document.getElementById("hiddenField").value=yourCalculatedVariable; 

你會得到這個作爲request

+0

嗯,我明白了..因爲總而言之,我試圖做的。在JSP中有一個HTML表單,並且使用onClick事件觸發javascript方法,然後返回一個變量。然後,該變量可以通過其餘的表單輸入值進行發送......因此,deff無法做到這一點? – Tiwaz89

+0

你可以在一些隱藏的字段中設置它,然後你可以通過表單submision發送它。 –

+0

就像這樣:? – Tiwaz89

0

我覺得沒有辦法做到這一點,除非你通過URL傳遞JavaScript的var值,但它是一個醜陋的解決方法。

0

你不能做到這一點..因爲JSP編譯和而JavaScript是在客戶端執行轉換爲HTML服務器端。 您可以將該值設置爲隱藏的html元素,並在請求中發送給servlet以防萬一您想要進一步使用

+0

啊,這是完美的,我可以做到這一點,它仍然可以解決我的問題。所以我只需要像下面這樣設置隱藏的輸入類型的值:? – Tiwaz89

+0

是的你是對的,你必須在方法本身中設置這個元素的值,並將該元素保存在表單中,以便在提交表單時將它添加到URL中。 –

0

由於JavaScript是客戶端,JSP是服務器端。

所以,Javascript不會執行,直到它到達瀏覽器, 但Java在服務器上執行。 所以,Java不知道JavaScript變量的價值。

但是,您將Java變量的值分配給JavaScript變量。

1

答案是你不能。 Java(在你的情況下是JSP)是一種服務器端腳本語言,這意味着它在所有javascript代碼之前被編譯和執行。您可以將JavaScript變量分配給JSP變量,但不能以其他方式分配。如果可能的話,你可以讓變量出現在QueryString中,或者通過表單(通過隱藏字段)傳遞它,然後通過JSP以這種方式提取變量。但是這需要重新提交頁面。

希望這會有所幫助。

1

JavaScript在客戶端觸發,JSP在服務器端。所以我可以說這是不可能的。