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