2012-03-14 139 views
1

我有這樣的代碼片段::將Scriptlets中的變量傳遞給Javascript。

<script type="text/javascript"> 
function gotoa(){ 
    <%! 
    public void a(){ 
    String temp1; 
    PopulateTextbox obj = new PopulateTextbox(); 
    temp1 = obj.method(); 
    request.setAttribute("variable", temp1); 
    } 
    %> 


var myVar = <%=request.getAttribute("variable")%> 
} 
</script> 

我想要做的是讓我的JavaScript函數gotoa變量temp1中的值()。在這個特殊的代碼我得到一個錯誤無效請求

request.setAttribute("variable", temp1); 

我的主要目的是爲了讓我的腳本讓代碼再次運行和新鮮值在變量傳遞給調用函數A()上的一些按鈕單擊事件temp1目錄。然後它將傳遞給gotoa()以充當我的數據網格的源(不在此代碼中)。基本上我想刷新一些按鈕點擊網格。我做對了嗎?請幫忙。謝謝。

+1

將'temp1'的值設置爲隱藏字段,並在Javascript中訪問此隱藏字段的值。 – Lion 2012-03-14 09:36:25

+0

如何做那個獅子? – 2012-03-14 09:37:52

+1

'」>'。你現在可以像這樣'document.getElementById('tempValue')。value;'' – Lion 2012-03-14 09:40:39

回答

5

當你需要內部gotoa()變量temp1的價值做到以下幾點:

<% String temp1; // Store value in temp1 variable for later use 
    PopulateTextbox obj = new PopulateTextbox(); 
    temp1 = obj.method(); 
%> 
<script> 
function gotoa(){ 

    var temp1Val = document.getElementById("hiddenTemp1").value; 
    // put your logic here 
    document.getElementById("hiddenTemp1").value = tempVal1; 
} 
</script> 
<body> 
<form action="otherPage.jsp"> 
    <!-- use the value of temp1 variable --> 
    <input type="hidden" name="hiddenTemp1" id="hiddenTemp1" value="<%=temp1%>"> 
    <input type="button" onclick="gotoa()" value="GotoA"> 
    <input type="submit" value="Submit New Value"> 
</form> 
</body> 

首先你賦值給變量temp1目錄。然後使用scriptlet通過值爲temp1的Hidden Input組件渲染JSP。如果你想驗證,只需查看生成的HTML源代碼,你應該看到輸入隱藏的值等於變量。

當提交表單時,hiddenTemp1的值將在Request中可用。 如果您打算更改此隱藏組件的值,可以將該值設置回組件中。

+0

與此有關的一個問題,試圖從同一個隱藏字段獲取值並將其重新設置回到同一個字段中? – Sundhar 2013-08-27 05:29:40

0

首先讓我告訴你幾件事情我已經觀察到了這種

1)設置和要求越來越需要一個頁面提交,否則它不會在參數

2)Scriplet和JSP可編譯以不同的方式,因爲你的scriplet編圖總是會發生的(不管它是頭體或頁腳)第一

現在,我們如何能做到這一點

1)使用EJB對象,而不是建議的請求對象

2)使用一個隱藏的輸入標籤來設置和獲取所需的值,將getter方法賦值給輸入標籤的某些值,如'需要變更時需要提交表單,如果你不需要重新加載整個頁面,請參考ajax方法來單獨更改值,而不用重新加載頁面