检查变量是否为真

时间:2010-10-25 14:24:52

标签: java javascript jsp

 function add(){
        <%if(empRecNum != null && !(empRecNum.equals("")))
    {
       empSelected=true;
    }
    boolean canModify = UTIL.hasSecurity("PFTMODFY") && empSelected;

     %>
    df('ADD');        

    }

当我点击添加时,我需要检查empSelected是否为真,并传递此canModify值。这会被称为吗?

我正在检查JavaScript中的Scriptlet是正确的吗

3 个答案:

答案 0 :(得分:4)

您需要正确理解以下概念:Java / JSP在Web服务器上运行并生成HTML / CSS / JS输出。 Web服务器将HTML / CSS / JS输出发送到webbrowser。 Webbrowser检索HTML / CSS / JS输出并显示HTML,应用CSS并执行JS。如果Java / JSP已经完成了它的工作,那么你不应该在webbrowser中看到任何Java / JSP代码行。右键单击webbrowser中的页面,然后选择查看源。你看到了吗,对吗?

webbrowser完全不了解服务器端的Java / JSP代码。所有它知道并且可以看到它检索的HTML / CSS / JS代码。 webbrowser和webserver之间唯一的通信方式是使用HTTP请求。在webbrowser中,可以通过在地址栏中输入URL,单击(书签)链接,按下提交按钮或使用JavaScript执行XMLHttpRequest来触发HTTP请求。在Web服务器中,可以配置Java / JSP(和Servlet)代码,使其仅在某些URL上执行。例如。某个位置上的JSP页面,映射到某个url-pattern上的Servlet等。

简而言之,要让JavaScript访问Java / JSP变量,您只需要让Java / JSP 打印它们就像它是一个JavaScript变量一样。要让JavaScript执行Java / JSP方法,您只需要让JavaScript 触发HTTP请求

另请参阅:Communication between Java/JSP/JSF and JavaScript

答案 1 :(得分:3)

更为精细的方法

var canModify = Boolean(${canModify});

使用jstl el,它会更清楚你打算做什么。 对boolean的调用将转换javascript boolean中的给定值。

记住:

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

答案 2 :(得分:1)

JSP中定义的canModify值永远不会传递给JavaScript。您需要在JavaScript中重新定义变量,例如:

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

另外,您应该放弃JSP scriptlet并切换到JSTL。