2013-08-19 28 views
0

如何在jsp中調用基於js變量值的java方法?如何在jsp中調用基於js變量值的java方法?

GVAR被定義爲一個全局變量,想法是在jsp被加載時給它賦值,一旦賦值,它將在整個應用程序中可用(因爲GVAR是全局定義的)問題是每當jsp加載,服務器端代碼被執行,下面提到的if塊根本不起作用,因爲它是客戶端。什麼是檢查js變量不是空的最好方法,然後只調用服務器端代碼來填充它。

<script>  
if (GVAR==null) { 
GVAR = <%=MyClass.getData("GVAR") %> ; 
} 
</script> 

我們有越來越由服務器端代碼和檢查服務器端的條件,每次將成爲性能瓶頸,在某些時候填充很多變數。

+0

什麼是「GVAR」?它是一個Java腳本變量?如果「是」,那麼這是不可能的。 <%= MyClass.getData(「GVAR」)%>是一個服務器端代碼,無論客戶端(Java腳本)代碼如何,它都將執行。我不確定你的要求,但使用AJAX可能有助於這種情況。 – Saurabh

+0

是的..它是一個javascript變量(var GVAR) – kanika

+0

是的,我知道這是不可能的,我正在探索Rhino來實現這一點。只是想知道是否有任何其他技術可以在這裏幫助..讓我看看我是否可以在這裏適應AJAX調用..唯一的要求是不調用服務器端的所有變量,如果他們已經填充.. – kanika

回答

0

這是非常令人困惑的問題,它說javascript獲取的是服務器變量的價值。

在註釋中出現那些服務器端變量不存在且必須被調用的地方!

無論如何,讓我明確這個概念。好像你正在使用JSP & Servlets。

<%=MyClass.getData("GVAR") %>

你確定它甚至執行和JSP編譯罰款?日誌中是否有錯誤?

問上述問題的主要原因是要確保在JSP上有適當的MyClass導入,並且getData()應該是公共靜態的(至少看起來是這樣)。

如果兩個條件都滿足,請首先測試函數,看看它是否真的有效。

+0

是的,它是JSP/Servlets的組合.Ofcourse中有導入,只是包含了一行來給出正在發生的事情,並且代碼是按預期工作的。 getData()是一個靜態方法,它接受一個arg並讀取屬性文件以獲取正在進行請求的變量的值。因此js變量被分配了這個值。這個JS變量是在主題級別定義的,我們將它填充到頁面上。但是,當同一頁面被渲染時,因爲這些值已經被分配給它並且不會改變,所以希望再次停止填充它。希望這會消除混淆。 – kanika

+0

在這種情況下,您可以考慮在sesssion中設置它,並在再次計算之前檢查它是否在會話中不可用。或者有各種技術,你可以有一個靜態變量和一行代碼,不計算它,如果它已經被計算。 –