function add(){
<%if(empRecNum != null && !(empRecNum.equals("")))
{
empSelected=true;
}
boolean canModify = UTIL.hasSecurity("PFTMODFY") && empSelected;
%>
df('ADD');
}
当我点击添加时,我需要检查empSelected是否为真,并传递此canModify值。这会被称为吗?
我正在检查JavaScript中的Scriptlet是正确的吗
答案 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请求。
答案 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。