Перенаправление на поиск параметров в лифте - PullRequest
2 голосов
/ 18 октября 2010

У меня есть окно поиска, которое отправляет запрос ajax во фрагмент.Когда вызывается оторванная функция, я бы хотел, чтобы поисковый запрос был добавлен к URL через хэш привязки (ala: http://localhost/search#param), чтобы я мог воссоздать поисковый запрос, если пользователь скопирует URL и вернется позже. Очевидно,с другой стороны это тянуть поле привязки во фрагменте, чтобы поиск можно было воссоздать по мере необходимости. Я немного растерялся относительно того, как это сделать ... даже не уверен, где хорошая отправная точка. Любые советы или подсказки накак это сделать в лифте было бы очень кстати.

Ответы [ 2 ]

2 голосов
/ 24 октября 2010

Я только что заработал ... вот мой шаблон:

<lift:surround with="default" at="content">
    <lift:searchSnippet.search>
        <s:query/>
        <s:submit/>
    </lift:searchSnippet.search>
</lift:surround>

И мой фрагмент:

class SearchSnippet extends Logger {

  val ns = "s"

  def search(in: NodeSeq) : NodeSeq = {
    // save the url of the original page request
    val url = S.uriAndQueryString.openOr("")

    var query = ""
    def submit : JsCmd = {
      JsRaw("window.location.href = '" + url + "#" + query + "'")
    }
    SHtml.ajaxForm({
      bind(ns, in,
        "query" -> SHtml.text(query, { q =>
          query = q
        }),
        "submit" -> (SHtml.submit("Search", () => {}) ++ SHtml.hidden(submit _)))
    })
  }
}

Хитрость заключается в том, чтобы сохранить URL-адрес, когда фрагмент первоначально отображается так, чтобывы не получаете ajax_request / ... uri, из которого отправляется форма ajax.

0 голосов
/ 19 октября 2010
LiftRules.satelessRewrite.append{
case RewriteRequest(ParsePath(List("path","to", myParam), _, _, _(, _, _) => RewriteResponse("path" :: "to" :: Nil, Map("myParam" -> myParam))
}

Обратите внимание, что я скопировал это, и не вставил.так что, возможно, вам стоит заглянуть в книгу, если она не работает.

...