2013-10-08 49 views
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/JSPIntro7.html

我以爲空將返回但是,我不會問的問題,如果我想.. 通過螢火蟲,該代碼在瀏覽器編譯後下面:。

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

爲什麼不爲空?地球上的結果是,我很困惑..

回答

1

${null}確實是打印爲空字符串。

另見章節的第二個點的EL specification 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變量。另外,目前還不清楚你最終想做什麼。也許知道if (a)在由於JS布爾魔術而導致它爲空字符串時仍然會評估false會有幫助。

+0

感謝您的回答,現在我知道$ {testtesttest} == $ {null}和$ {null}返回「」,您的EL規範文檔對我來說是一份禮物,謝謝! @BalusC –

-1

GET的原因是什麼:

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

是,當你這樣做:

var a = "${testtesttest }"; 

真正做:

var a = "null"; 

什麼是導致:

var a = ""; 
+0

「真正做什麼」的部分是完全錯誤的,或者至少是混淆和誤導。 – BalusC

+0

你給我一個負面的投票,然後像我一樣解釋?哇!那很棒.. –

+0

我的答案是不一樣的。 – BalusC

相關問題