2010-10-25 60 views
0
function add(){ 
     <%if(empRecNum != null && !(empRecNum.equals(""))) 
    { 
     empSelected=true; 
    } 
    boolean canModify = UTIL.hasSecurity("PFTMODFY") && empSelected; 

    %> 
    df('ADD');   

    } 

當我添加點擊,我需要檢查是否empSelected是真還是假,並通過這個canModify值。這會被稱爲?檢查變量是否是真還是假

這是正確的方式我檢查一個scriptlet一個JavaScript

回答

1

canModify在JSP中定義的值不會傳遞給JavaScript內。你需要重新定義JavaScript中的變量,例如:

<% 
if (canModify) { // This is the JSP variable 
%> 
    var canModify = true; // This is the JavaScript variable 
<% 
} else { 
%> 
    var canModify = false; 
<% 
} 
%> 

在不同的音符,你應該放棄JSP小腳本,並切換到JSTL。

+0

如果canModify是真的,那麼我需要執行這個JSP聲明UTIL.hasSecurity( 「PFTMODFY」)&& canModify; – John 2010-10-25 14:33:21

+0

@John:我錯過了什麼嗎?您發佈的代碼與您在評論中提到的代碼不同。 – casablanca 2010-10-25 14:39:34

+0

是的......如果canModify爲真,我可以執行任何JSP語句 – John 2010-10-25 14:43:45

3

更elagant辦法做到這一點

var canModify = Boolean(${canModify}); 

使用JSTL EL,它變成更清楚你有什麼打算這樣做。 對布爾值的調用將轉換javascript布爾值中的給定值。

記住:

Boolean(true); // returns true 
Boolean(false); // return false 
Boolean(); // returns false 
+1

這隻有在「canModify」是頁面或請求範圍中的屬性時纔有效。它在原始問題中定義的方式,這不起作用。 – Pointy 2010-10-25 14:41:13

4

您需要得到以下概念正確的:Java/JSP的運行在Web服務器和生成HTML/CSS/JS輸出。 Web服務器將HTML/CSS/JS輸出發送到webbrowser。 Webbrowser檢索HTML/CSS/JS輸出並顯示HTML,應用CSS並執行JS。如果Java/JSP已完成其工作,則不應在webbrowser中看到任何Java/JSP代碼行。在瀏覽器中單擊右鍵並選擇查看源代碼。你看到它了嗎?

網頁瀏覽器完全沒有關於服務器端Java/JSP代碼的概念。它所知道的並且可以看到的是它所檢索的HTML/CSS/JS代碼。 webbrowser和webserver之間唯一的通信方式是使用HTTP請求。在網頁瀏覽器中,可以通過在地址欄中輸入URL,單擊(書籤)鏈接,按提交按鈕或使用JavaScript執行XMLHttpRequest來觸發HTTP請求。在網絡服務器中,可以配置Java/JSP(和Servlet)代碼,使其僅在特定的URL上執行。例如。某個位置上的JSP頁面,映射到某個特定位置的Servlet等等。

簡而言之,要使JavaScript訪問Java/JSP變量,您只需讓Java/JSP 將它們打印出來,就好像它是一個JavaScript變量。要讓JavaScript執行Java/JSP方法,您只需要讓JavaScript 觸發HTTP請求

參見:Communication between Java/JSP/JSF and JavaScript

相關問題