2

我是 Scala 的 Lift 框架的新手。出于某种原因,index.html 驻留在 web-app 目录中,当我启动码头时,http://localhost:8080/将指向那个 index.html 文件就好了。但是,如果我将 login.html 文件放在与 index.html 相同的文件夹中,然后转到http://localhost:8080/login,Lift 不会提供该文件。

我需要将文件放在哪里才能让它们注册?我有点迷茫,因为这种行为似乎只适用于 index.html 而没有别的。

这是我在 Chrome 中查看源代码时发生的情况:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> <body>The Requested URL /login was not found on this server</body> </html>  
4

2 回答 2

5

请查看 SiteMap wiki 页面: http: //liftweb.assembla.com/wiki/show/liftweb/SiteMap

SiteMap 的原因是菜单生成和访问控制的统一。您可以按名称引用页面,如果您在目录层次结构中移动它们,使用 SiteMap,链接将始终有效。SiteMap 提供了一种类型安全的机制来提取查询参数和路径信息,以便您的当前页面可以具有关联的对象,并且可以通过将对象传递给 Loc 来计算页面的 URL。

SiteMap 可能看起来有点重,但是如果您要构建一个对不同页面具有不同访问控制规则的站点,SiteMap 为您提供了一个很好的、统一的展示和安全机制。

如果您不想使用 SiteMap,只需从 Boot.scala 中删除 LiftRules.setSiteMap() 行,Lift 就会为任何页面提供服务。

于 2010-06-18T05:39:52.473 回答
1

回答您的最后一条评论:如果您使用默认的 Lift 原型来尝试 Lift:这将使用为您的站点提供菜单的 SiteMap。这是在bootstrap.liftweb.Boot.scala类中定义的。默认情况下,使用带有菜单的站点地图来控制您可以在应用程序中访问的页面。我不确定是否有一种简单的方法可以禁用该功能,所以如果有人知道,请发表评论。如果您根本不想要这个,您可以通过删除Boot 类中的val entries = Menu(Loc("Home", List("index"), "Home")) :: Niland来禁用它。LiftRules.setSiteMap(SiteMap(entries:_*))这样,您可以通过转到 URL 直接访问您想要的任何页面。

于 2010-06-17T17:29:20.417 回答