重定向到电梯中搜索参数

时间:2010-10-18 16:32:21

标签: search scala url-rewriting lift

我有一个搜索框,可以向代码段发送ajax请求。当调用剪切函数时,我希望通过锚点哈希(ala:http://localhost/search#param)将搜索查询添加到URL中,这样如果用户复制URL并稍后返回,我就可以重新创建搜索请求。显然,另一方面是在代码段中拉出锚点字段,以便可以根据需要重新创建搜索。关于如何做到这一点,我有点迷茫......甚至不确定一个好的起点在哪里。有关如何在Lift中执行此操作的任何提示或提示将非常受欢迎。

2 个答案:

答案 0 :(得分:2)

我刚刚开始工作..这是我的模板:

<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表单提交的ajax_request / ... uri。

答案 1 :(得分:0)

LiftRules.satelessRewrite.append{
case RewriteRequest(ParsePath(List("path","to", myParam), _, _, _(, _, _) => RewriteResponse("path" :: "to" :: Nil, Map("myParam" -> myParam))
}

请注意,我复制了这个,并没有粘贴。所以你可能应该在书中查看它是否有效。