我试图在if
条件下打印变量。它是使用Spring和JavaScript完成的。我不知道春天。如何在浏览器中打印Spring变量的值?
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">
</script>
<script>
$(document).ready(function(){
$("p").click(function(){
$(this).hide();
});
});
</script>
</head>
<body>
<p>If you click on me, I will disappear.</p>
<p>Click me away!</p>
<p>Click me too!</p>
</body>
</html>
我将尝试把我对你的问题的评论拼凑成一个答案,因为他们似乎已经解决了这个问题。
您首先应该了解的是服务器端代码解析和执行(对您来说是JSP页面)和客户端代码解析和执行(对您来说是HTML和JavaScript)之间的区别。你可以在这个programmers.stackexchange.com问题的顶级答案中阅读一个简短的概述。可以在Wikipedia的关于服务器端脚本和客户端脚本的文章中找到进一步的阅读。从关于服务器端脚本的客户端脚本文章中吸取的一个关键概念是:[服务器端脚本]以web浏览器可理解的格式(通常是HTML)产生输出,然后将其发送到用户的计算机。用户无法看到脚本的源代码(除非作者单独发布代码),甚至可能不知道脚本被执行了。反过来,由服务器端脚本生成的文档可能包含客户端脚本。
就您的设置而言,这意味着当您通过浏览器请求JSP页面时,您的浏览器会告诉托管JSP页面的服务器浏览器需要该页面。然后,服务器执行JSP页面,生成一个本质上纯粹是HTML和JavaScript的文档(如果这样写的话,也可能包含一些CSS),然后发送给浏览器。浏览器永远不会看到JSP代码。当服务器完成解析和执行JSP页面时,所有${someExpression}
(JSP EL语句)的实例和其他JSP特定表达式(如标记库,如<spring:xx>
标记)将被解析为一些客户端等效的表达式。对于基本JSP EL语句(${...}
),这些语句解析为一些字符串值。如果您碰巧巧妙地将EL语句放在JSP中的某些JavaScript中,例如console.log("${myVariable}");
,那么您将动态生成依赖于EL语句输出的JavaScript代码(在本例中,它将解析为console.log("myVariable-value");
之类的内容)。
console.log("myVariable-value");
的内容,而不知道或不关心是JSP代码生成的,并执行它(因为您巧妙地放置了EL语句以生成有效的JS)。
这个冗长的解释意味着你可以这样做:
服务器端JSP:
alert("${createBehavior.behaviorRevisionAllowed}");
从服务器发送到客户端浏览器的结果代码:
alert("false");
在浏览器中执行代码后的结果:弹出一个alert
框,其中包含值false
。
服务器端JSP:
console.log("${createBehavior.behaviorRevisionAllowed}");
从服务器发送到客户端浏览器的结果代码:
console.log("false");
在浏览器中执行代码后的结果:将值false
记录到控制台。
服务器端JSP
return [$('#some-id'), "<spring:message code='BH-MS-0070'/>"];
从服务器发送到客户端浏览器的结果代码:
return [$('#some-id'), "some-spring-message-string"];
在浏览器中执行代码后的结果:JavaScript return
语句中的数组以值"some-spring-message-string"
作为第二个元素创建。
从你关于"EL变量"的评论中的问题来看,当我说"EL变量"时,我的意思是EL语句,如${someStatement}
,可以是像变量名称一样简单的语句,如${createBehavior.behaviorRevisionAllowed}
。这个EL语句将在其中只看到一个变量名,尝试找到该变量并获得其值,然后将${createBehavior.behaviorRevisionAllowed}
替换为实际值。
如果需要进一步解释请告诉我。