Поднимите прохождение данных с помощью ссылки - PullRequest
2 голосов
/ 30 июня 2011

Каков «лучший» способ передачи данных по ссылке?

В данный момент я сохраняю Данные в 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")
  }
}

Ответы [ 2 ]

3 голосов
/ 30 июня 2011

Если у вас есть:

object MyInfo extends RequestVar("nothing")

Тогда:

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

Вы фиксируете значение, вычисляя его перед выполнением redirectTo, а затем выполняете функцию, которая устанавливает RequestVar в значение. RequestVar может быть доступен на целевой странице.

1 голос
/ 30 июня 2011

Если он находится в SessionVar, нет необходимости передавать его по ссылке.Просто откройте его в следующем фрагменте.

Обновление: Извините, я неправильно прочитал ваш вопрос.Вы уже делаете это, но лучше передать его по ссылке (в качестве параметра запроса?).Как правило, это не способ Lift: кто-то может изменить значение и т. Д. Если вы действительно хотите, вы можете добавить к ссылке параметр запроса и затем получить к нему доступ в следующем фрагменте кода с помощью S.param("the-name").

...