我正在尝试在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>
答案 0 :(得分:1)
我会尝试将我对你问题的评论拼凑成答案,因为他们似乎已经解决了这个问题。
您应该首先了解的是服务器端代码解析和执行(适合您的JSP页面)和客户端代码解析和执行之间的区别(适用于您的HTML和JavaScript)。您可以在this programmers.stackexchange.com question的评分最高的答案中阅读简要概述。维基百科在server-side scripting和client-side scripting上的文章中可以找到进一步的阅读。关于服务器端脚本的客户端脚本文章的一个关键概念是:
[服务器端脚本]以Web浏览器(通常为HTML)可理解的格式生成输出,然后将其发送到用户的计算机。用户无法看到脚本的源代码(除非作者单独发布代码),甚至可能不知道脚本已执行。服务器端脚本生成的文档可能反过来包含客户端脚本。
就您的设置而言,这意味着当您通过浏览器请求JSP页面时,您的浏览器会告知托管JSP页面的服务器,浏览器需要该页面。然后,服务器执行JSP页面以生成纯HTML和JavaScript文档(也许是一些CSS,如果你这样写的话),以便发送到浏览器。 浏览器永远不会看到JSP代码。当服务器完成解析和执行JSP页面时,${someExpression}
(JSP EL语句)和其他特定于JSP的表达式(如taglib,如<spring:xx>
标签)的所有实例都将被解析为一些客户端的等价物。对于基本的JSP EL语句(${...}
),这些解析为某些字符串值。如果您巧妙地将该EL语句放在JSP中的某些JavaScript中,例如console.log("${myVariable}");
,那么您将动态生成将依赖于EL语句输出的JavaScript代码(在此示例中,它将解析为类似于console.log("myVariable-value");
)。
到目前为止,服务器刚刚执行JSP代码(否则页面中的HTML / JS / CSS已经完好无损)。没有解析或执行JavaScript。在服务器完成执行JSP操作之后,这个最终的“渲染”页面将作为纯HTML / JS / CSS发送到客户端浏览器,客户端浏览器接收它并解析/执行它。此时,浏览器会看到类似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}
替换为实际值。
如果需要进一步解释,请告诉我。