1

我在我的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/JSIntro7.html

我以为null会返回,但是,如果我愿意,我不会问问题..通过firebug,在下面的浏览器中编译后的代码:。

<body>
   <script>
      var a = ""; 
   </script>
</body>

为什么不为空?结果到底是什么,我很困惑..

4

2 回答 2

1

${null}确实打印为空字符串。

另见EL规范第1.18.2章的第二点(A代表“任何对象”):

1.18.2 将 A 强制转换为字符串

  • 如果AString:返回A
  • 否则,如果Anull:返回""
  • 否则,如果AEnum,则返回A.name()
  • 否则,如果A.toString()抛出异常,则错误
  • 否则,返回A.toString()

很难回答你到底想要什么。如果它实际上会打印 null,那么生成的 JS 代码最终会var a = "null";var a = null;. 然后,您应该有条件地打印带或不带引号的 JS 变量。此外,目前还不清楚您最终想要对此做什么。由于 JS 布尔魔法,知道当它是一个空字符串时if (a)仍然会评估它可能会有所帮助。false

于 2013-10-08T10:50:31.283 回答
-1

获取原因:

<body>
    <script>
        var a = ""; 
    </script>
</body>

是当你这样做的时候:

var a = "${testtesttest }";

真正在做什么:

var a = "null";

被翻译成:

var a = "";
于 2013-10-08T10:27:03.427 回答