有人可以测试此示例并共享结果吗? http://timothypowell.net/blog/?p=23 当我这样做时:
var myVar = '<% request.getContextPath(); %>'; alert(myVar);
我得到: '<% request.getContextPath(); %>'.
'<% request.getContextPath(); %>'.
删除’<%request.getContextPath();中的单引号 %>’;; 给出语法错误。如何在js函数中使用scrptlet或expresion?
编辑:此链接的解释对我有帮助:http : //www.codingforums.com/showthread.php?t=172082
听起来您是将JSP代码放在JavaScript页面中,或者至少是在非JSP页面中。脚本只能包含在JSP页面中(通常配置为* .jsp)。
所提供的语句如果由JSP编译器处理,将导致myVar等于”,因为您正在使用的<%…%>的scriptlet格式在标记之间执行Java代码,但不会返回结果。
因此,要使用此标记,您需要手动将一个值写入请求输出流。要获得所需的功能,您需要执行以下操作:
make sure your code is in a JSP page use var myVar = '<%= request.getContextPath() %>'; (note the equals sign)
综上所述,在大多数情况下,scriptlet被视为不良做法。在大多数情况下,您应该使用JSTL表达式和自定义标签。