【问题标题】:Are JSP expressions evaluated inside HTML comments of a JSP page?JSP 表达式是否在 JSP 页面的 HTML 注释中求值?
【发布时间】:2011-06-30 22:09:14
【问题描述】:

是否在 JSP 页面的 HTML cmets 内评估 JSP 表达式?

即在这种情况下服务器会输出什么?

<!--
Jeremy <%="Flowers"%>
--> 

表达式会被解析还是会作为表达式保留在 HTML 注释中

一)

<!--

Jeremy <%="Flowers"%>

-->

或 b)

<!--

Jeremy Flowers

-->

【问题讨论】:

  • 不用将&lt;&gt;替换成html代码,你可以选择文本然后按ctrl+K

标签: html jsp comments expression


【解决方案1】:

当页面呈现给浏览器时,您甚至可以使用 HTML cmets 部分隐藏来自 jsp 表达式的计算结果。

例如

`${empty requestScope.errors? "" : "<p id='errors'>Error(s)!
    <ul>"}
    <!--${requestScope.errors.stream().map(x -> "-->
               <li>"x"</li>
           <!--").toList()}-->
    ${empty requestScope.errors? "" : "</ul></p>"}`

requestScope.errors.stream().map(x-&gt;) 中的局部变量 x 仍会被计算并传递给 &lt;li&gt;"+=x+="&lt;/li&gt;

输出:

`错误!

  • 产品必须有名称
  • 产品必须有价格
`

如果表达式不在 HTML 注释标签中,由于.toList() 而出现“[]”符号

没有 HTML 标签的输出:

`错误!

    [
  • 产品必须有名字
  • 产品必须有价格
  • ]
`

【讨论】:

  • 请重新格式化您的答案以便阅读。
【解决方案2】:

是的,表达式将被解析。 JSP 页面甚至不知道它是以 HTML 格式编写的,因此它不会解释任何特定于 HTML 的内容。

您还可以使用 JSP、JSON 或任何您喜欢的方式编写纯文本。

【讨论】:

    【解决方案3】:

    这些是 html cmets,而不是 jsp cmets。所以,里面所有的jsp代码还是会被求值的。

    还有特定于 jsp 的方式来评论内容:&lt;%-– ... -–%&gt;。里面的内容不会被服务器评估,也不会传递给浏览器。所以,它也可以作为 html 注释。

    【讨论】:

    • 那么 JSP 解析器(编译器)在这方面表现不聪明? (我也肯定知道 JSP 评论 :-))
    • @JGFMK 你可以这么说。但我认为将新功能(jsp)与现有功能(html)分开并不是一个坏主意。
    • 这真的很有帮助,如果你不知道,可能会让人抓狂。 HTML 注释标签不会阻止 JSP 读取与 JSP 相关的表达式,但 JSP 注释标签会。如果您编写
    猜你喜欢
    • 2011-09-09
    • 2010-09-18
    • 2012-12-04
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多