2011-06-30 8 views
2

リンクでデータを渡すための「最良の」方法は何ですか?リンクでデータを渡す

現時点では、データをSessionVArに保存して、反対側に取得します。しかし、それは非常に不器用な感じです。それを行うための他の方法はありますか?

object activeHw extends SessionVar[Box[Hw]](Empty) 

object AddHwScreen extends LiftScreen { 
    object hw extends ScreenVar(activeHw.is.getOrElse(Hw.createRecord)) 
    addFields(() => hw.is) 
    def finish() = { 
    redirectTo("/hw") 
    } 
} 

class HwSnippet extends StatefulSnippet with PaginatorSnippet[Hw] { 
    var dispatch: DispatchIt = { 
    case "showAll" => showAll _ 
    } 

    def showAll(xhtml: NodeSeq): NodeSeq = { 
    page.flatMap(hw => { 
     (".hwDetail *" #> link ("hw/detail",() => activeHw.set(Full(hw)), Text("Detail")) & 
     ".hwSn *" #> hw.sn).apply(xhtml) 
    }) 
    } 

    def redirectToHome = { 
    redirectTo("/hw") 
    } 
} 

答えて

3

お持ちの場合:次に

object MyInfo extends RequestVar("nothing") 

val str = (new java.util.Date).toString 
S.redirectTo("/",() => MyInfo.set(str)) 

をあなたが値にRequestVarを設定する関数を実行し、redirectToを行う前に、それを計算して値をキャプチャします。 RequestVarはターゲットページからアクセスできます。

1

SessionVarにある場合は、リンクに渡す必要はありません。次のスニペットでアクセスしてください。

更新:申し訳ありませんが、あなたの質問は間違っています。あなたはすでにそれをやっていますが、それをリンク上で(クエリパラメータとして)渡すでしょう。一般的にはリフトのやり方ではありません。誰かが値などを変更する可能性があります。本当にしたい場合は、リンクにクエリパラメータを追加し、次のスニペットでS.param("the-name")でアクセスできます。

関連する問題