2012-03-23 7 views
2

EDIT:私の問題は、この例はうまくいきませんでした!ページがメニューに表示されないことです!さらに、パラメータを持たないページをどうすれば処理できますか?リフトで、Menu.paramの動作方法を変更する

Menu.paramの一般的な定義が見つかりません。 Simply Liftにはこの例があり、このフォーラムのコードにはいくつかの言及がありますが、この機能は重要でありながら、私が知る限り、あまり詳しくは書かれていません。

今、私は自分のサイトマップに問題があります。私がsitema Boot.scalaで宣言しているコードはすべて受け入れられているようですが、無視されます。 localhost:8080/journalが404になり、メニュー項目「Autobiography」がサイトマップに表示されません。

このポストは、一方で、このコードのヘルプの呼び出しです。なぜそれは無視されていますか?

一方、David Pollackの例の外で私が「param」であるかどうかは不明ですか? APIにはありません:http://main.scala-tools.org/ mvnsites/liftweb-2.0/framework/scaladocs/net/liftweb/sitemap/Menu $ object。html。

ありがとうございました。

これは私のサイトマップです。 Simply LiftのParamのサンプルを追加して、機能しているかどうかを確認しました。それはしません。

def sitemap = SiteMap(
    Menu.i("Home")/"index" >> User.AddUserMenusAfter, // the simple way to declare a menu 
    Menu.i("Artifact")/"artifact", // Works 
    // Menu.i("Autobiography")/"journal", // Works if I comment out the next line. 
    AutobiographyPageMenu.menu, 
    Menu.param[AutobiographyPage](​"Autobiography2", "Autobiography2", // Similar code as previous line. Doesn't work. 
           pageName => Full(AutobiographyPage(​pageName)), 
           ap => ap.pageName)/"journal2", 
    Param.menu, // Added to see if D. Pollack's code would work. It didn't. 

    // more complex because this menu allows anything in the 
    // /static path to be visible 
    Menu(Loc("Static", Link(List("static"), true, "/static/index"), 
      "Static Content"))) 

これは、スニペットサブパッケージ内のファイルから参照されるコードです。リフトはクラスを見つけることができます:定義されていないことについて彼らは不平を言っていません。

case class AutobiographyPage(pageName: String) 

object AutobiographyPageMenu { 

    val menu = Menu.param[AutobiographyPage](​"Autobiography", "Autobiography", 
              pageName => Full(AutobiographyPage(​pageName)), 
              ap => ap.pageName)/"journal" 
    // I'm not sure what these two lines are for... 
    lazy val loc = menu.toLoc 
    def render = "*" #> loc.currentValue.map(_.​pageName) 
} 

// This code is copied from the Simply Lift book: 

// capture the page parameter information 
case class ParamInfo(theParam: String) 

// a snippet that takes the page parameter information 
class ShowParam(pi: ParamInfo) { 
    def render = "*" #> pi.theParam 
} 

object Param { 
    // Create a menu for /param/somedata 
    val menu = Menu.param[ParamInfo]("Param", "Param", 
            s => Full(ParamInfo(s)), 
            pi => pi.theParam)/"param" 
    lazy val loc = menu.toLoc 

    def render = "*" #> loc.currentValue.map(_.​theParam) 
} 
+0

私の問題は、この例がうまくいかないことではないことがわかりました。ページがメニューに表示されないことです!さらに、パラメータを持たないページをどうすれば処理できますか? – eje211

答えて

1

あなたが見ることができるように、あなたが同じパスに2つのメニューの参照を持っている:

// Menu.i("Autobiography")/"journal", // Works if I comment out the next line. 


val menu = Menu.param[AutobiographyPage](
    ​"Autobiography", "Autobiography", 
    pageName => Full(AutobiographyPage(​pageName)), 
    ap => ap.pageName)/"journal" 

彼らは両方の試合http://localhost/journal、それが動作しない理由です、同じメニューID「自伝」を持っています。

AutobiographyPageMenu.paramのメニューID「Autobiography」を変更して、動作するかどうかを確認してください。

関連する問題