0

很长一段时间以来,我一直将 Lift Web 框架用作仅限 REST 的服务,但现在我需要将其用作独立工具。

<lift:surround with="default" at="content">
  <head>
      <script data-lift="with-resource-id" src="/test.js" type="text/javascript"></script>
  </head>

  <h2>Welcome to your project!</h2>
  <p><lift:helloWorld.howdy /></p>
</lift:surround>

我有上面非常基本的电梯模板。问题是当我在浏览器中查看它时,添加了一个<?xml>DOCTYPE 并且浏览器默认将资源解释为 XML 而不是纯 HTML。

如何告诉 Jetty/Lift 我的静态文件是 HTML?

4

2 回答 2

1

听起来您可能正在使用 XHTML 文档类型。在您的Boot.scala文件中,您可能想尝试添加:

LiftRules.htmlProperties.default.set((r: Req) =>
  new Html5Properties(r.userAgent))

这应该将您的应用程序设置为使用 HTML5,并且应该关闭添加<?xml...编码标头。

此外,正如@VasyaNovikov 所提到的,lift:前缀标签是一个较旧的构造(尽管很多文档仍然提到它们)。它们仍然有效,但在 HTML5 上会有一些问题。建议使用任一等效形式:

原来的:

<lift:surround with="default" at="content">...</lift:surround>

HTML5:

<span data-lift="surround?with=default;at=content"></span>    
<span class="lift:surround?with=default;at=content"></span>

如果你想使用lift:变体,你会发现最大的问题是在 HTML5 中标签和属性被转换为小写,所以<lift:helloWorld.howdy />会被解释为<lift:helloworld.howdy />,而 Lift 不会找到该片段。使用<span data-lift="helloWorld.howdy"></span>应该允许你解决这个问题。

于 2013-05-19T13:35:12.350 回答
1

也许添加标题会有所帮助?

<html>
<head>...

示例: https ://github.com/lift/lift_25_sbt/blob/master/scala_29/lift_basic/src/main/webapp/index.html

通常,您使用非常古老的模板方法,使用自定义标签<lift:surround><lift:helloWorld>。你从哪里弄来的?我建议使用我发布的链接中的新模板样式。

于 2013-05-19T10:26:06.773 回答