2010-10-25 62 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

相关问题