2010-06-17 55 views
2

我是新來scala的Lift framework。出於某種原因,index.html駐留在web-app目錄中,當我啓動碼頭時,http://localhost:8080/將指向那個index.html文件就好了。但是,如果我將login.html文件放在與index.html相同的文件夾中,然後轉到http://localhost:8080/login,則Lift不會提供該文件。我在哪裏把html文件放到我的web-app文件夾中,用maven升降機項目?

我需要在哪裏放置文件才能讓它們註冊?我有點失落,因爲行爲似乎只適用於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> 
+0

只要確定:http:// localhost:8080/login.html對不對? – houbysoft 2010-06-17 15:27:54

+0

是的,我忘記提及了。無論延期如何,它都不起作用。我不知道發生了什麼問題。我必須告訴Lift手動添加這些html文件嗎?或者把它指向一些「公共html」目錄? – egervari 2010-06-17 15:37:40

+0

默認情況下,Lift Boot類會使用您可以訪問的頁面構建一個站點地圖。檢查:http://stackoverflow.com/questions/2886921/how-to-add-a-new-page-in-lift-framework – 2010-06-17 16:13:01

回答

5

請參閱網站地圖wiki頁面:http://liftweb.assembla.com/wiki/show/liftweb/SiteMap

原因Sitemap是菜單生成和訪問控制的統一。您可以通過名稱來引用頁面,如果您使用SiteMap將它們移動到目錄層次結構中,這些鏈接將始終有效。 SiteMap提供了一種用於提取查詢參數和路徑信息的類型安全機制,以便您可以通過將對象傳遞給Loc來計算當前頁面的關聯對象和頁面的URL。

SiteMap可能看起來有點沉重,但如果您打算爲不同的網頁構建不同的訪問控制規則的網站,SiteMap爲您提供了一個很好的統一的演示和安全機制。

如果您不想使用SiteMap,只需從Boot.scala中刪除LiftRules.setSiteMap()行,然後Lift將提供任何頁面。

1

給予回答你的最後一個註釋:如果您使用默認的電梯原型嘗試提升:它使用的是提供了一個網站地圖菜單爲您的網站。這在bootstrap.liftweb.Boot.scala類中定義。默認情況下,使用帶菜單的站點地圖控制您可以在應用程序中訪問的頁面。我不確定是否有簡單的方法來禁用該功能,所以如果有人知道,請評論。 如果您完全不需要,您可以通過刪除Boot類中的val entries = Menu(Loc("Home", List("index"), "Home")) :: NilLiftRules.setSiteMap(SiteMap(entries:_*))來禁用它。這樣,您可以通過轉到URL直接訪問任何您想要的頁面。

相關問題