我在jsp页面编码时出现问题:
<body>
<script>
var a = "${testtesttest }";
</script>
</body>
毫无疑问,“testtesttest”对象必须找不到,但应该返回什么? 在官方文件中,它说:
For example, when evaluating the expression ${product}, the container will look for product in the page, request, session, and application scopes and will return its value. If product is not found, null is returned.
http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPIntro7.html
我认为null会被退回,但是,如果我愿意,我不会问问题。 通过firebug,在浏览器中编译后的代码如下:。
<body>
<script>
var a = "";
</script>
</body>
为什么不null?结果是什么,我很困惑..
答案 0 :(得分:1)
${null}
确实打印为空字符串。
另见EL specification的第1.18.2章的第二点(A
代表“任何对象”):
1.18.2将A强制转换为字符串
- 如果
A
为String
:则返回A
- 否则,如果
A
为null
:则返回""
- 否则,如果
A
为Enum
,请返回A.name()
- 否则,如果
A.toString()
抛出异常,则错误- 否则,请返回
A.toString()
很难给出你想要的答案。如果它实际上打印为null,那么生成的JS代码最终会像var a = "null";
那样与var a = null;
完全不同。然后,您应该有条件地打印带有或不带引号的JS变量。此外,还不清楚你最终想要做什么。也许知道if (a)
在由于JS布尔魔术而成为空字符串时仍会评估false
是有帮助的。
答案 1 :(得分:-1)
获取的原因:
<body>
<script>
var a = "";
</script>
</body>
当你这样做时,是:
var a = "${testtesttest }";
真正在做什么:
var a = "null";
被描述的内容:
var a = "";