【问题标题】:JSP not rendering properly in TomcatJSP 在 Tomcat 中无法正确呈现
【发布时间】:2011-05-23 16:39:45
【问题描述】:

我有一个在 Tomcat 中运行的 JSP 页面没有正确呈现。这是 helloworld.jsp 的样子:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="cms-taglib" prefix="cms" %>
<html>
  <head>
    <title>${content.title}</title>
  </head>
  <body>
    <cms:mainBar
       dialog="my-page-properties-dialog"
       label="Page Properties"
       adminButtonVisible="true"/>
    <h1>${content.title}</h1>
    <p>Hello Magnolia World !</p>

    Current time: <%= new java.util.Date() %>
    <%-- JSP Comment --%>

  </body>
</html>

最后的输出是这样的:

你好 玉兰世界!

你好木兰世界!当前时间:

简而言之,似乎只有表达式 ${content.title} 被评估和渲染得很好,但页面指令、其他 JSP 表达式和 JSP cmets 等其他所有内容都没有。

我使用的是 Tomcat 附带的 CMS,但发行版中的 JSP 模板样本看起来不错。我想我上面写的代码有问题。

更新:我已经修复了日期表达式和评论的封闭标记。但是,页面指令没有被解析。

【问题讨论】:

  • 对于最终输出,您是指您在浏览器中看到的还是在生成的源中看到的内容,如您通过右键单击在浏览器中看到的查看源
  • 与查看源代码不完全相同。它是“部分”渲染的。 html 和 p 标签渲染得很好。 content.title 的值也被评估得很好。
  • 我的意思是,你在 webbrowser 或 HTML 源代码中看到 &amp;lt;% %&amp;gt; 的东西吗?如果在 webbrowser 中,则意味着它们在 HTML 源代码中以某种方式转义为 &amp;lt;% %&amp;gt;
  • 既然你接受了一个根本没有回答你具体问题的答案,那么实际问题到底是什么?您完全有资格将其作为您自己的答案发布并接受(2 天后)。
  • @BalusC:完成,两天后我会接受。感谢您让我知道 SO 的会议。

标签: java jsp tomcat magnolia


【解决方案1】:

我觉得你的jsp评论有问题。

它应该如下所示。你不是用IDE来开发你的jsp吗?当您遇到语法错误时,您的 IDE 应该会告诉您。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="cms-taglib" prefix="cms" %>
<html>
  <head>
    <title>${content.title}</title>
  </head>
  <body>
    <cms:mainBar
       dialog="my-page-properties-dialog"
       label="Page Properties"
       adminButtonVisible="true"/>
    <h1>${content.title}</h1>
    <p>Hello Magnolia World !</p>

    Current time: <%= new java.util.Date() %>
    <%-- JSP Comment --%>

  </body>
</html>

【讨论】:

  • 这并不能解释为什么指令(顶部的那两行)没有被解析。
  • 我在没有 cms taglib 的情况下运行了这段代码(因为我没有安装它)并且根本没有错误。然后,我也用 cms 运行它(即使我没有安装它)。我的 tomcat 引发了 org.apache.jasper.JasperException:找不到文件“/cms-taglib”。最后,我在没有结束标签的情况下运行它,它也引发了异常。我不知道史蒂夫如何让它部分渲染。
【解决方案2】:

我发现了问题。这是我的一个愚蠢的错误。即使我修正了正确的 JSP 语法并拥有 jsp 扩展,我仍需要告诉 CMS 引擎将该模板显式呈现为 JSP。不过,感谢大家发现我的语法错误。我想在使用其他框架时需要注意这一点。

【讨论】:

  • 我知道这篇文章已有 5 年历史了,我也遇到了同样的问题。我理解这个问题,但不知道你是如何解决的。你能详细说明一下吗?
【解决方案3】:

java scriplet &lt;%= new java.util.Date() % 也没有正确关闭 (&lt;%= new java.util.Date() %&gt;) 加上像 gigadot 所述,&lt;%-- JSP Comment --% 没有正确关闭 &lt;%-- JSP Comment --%&gt;

问候,

【讨论】:

    【解决方案4】:

    通常我们会看到代码,当解析器无法识别文件时显示在浏览器中,即文件扩展名未添加到解析器列表中。

    通常tomcat在/conf文件夹下的web.xml中有这个配置。

    另外,如果您使用某些文本编辑器进行编码,请确保您仅使用 .jsp 扩展名而不是 .jsp.txt 存储,不小心!

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2012-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-19
      相关资源
      最近更新 更多