Я пытаюсь создать простое поисковое приложение в качестве учебного эксперимента с Comet и Lift Framework . План состоит в том, чтобы иметь страницу с текстовой записью и местом для результатов поиска. Когда введен поисковый термин, он должен быть передан как запрос ajax, а результаты должны быть отправлены сервером обратно и отображены на той же странице. Когда сервер находит больше результатов, они должны быть отправлены клиенту.
Используя Comet Chat Demo в качестве шаблона, у меня есть CometActor, который отображает как форму ajax, так и результаты поиска из следующего шаблона:
<lift:comet type="SearchResults" name="Other">
<search:input><search:input /><input type="submit" value="Search" /></search:input>
<search:results>
<div>Results for: <search:tag /></div>
<div class="search-results">
<search:list>
<li><list:title /></li>
</search:list>
</div>
</search:results>
</lift:comet>
Соответствующий субъект SearchResults отображает это в двух частях: fixedRender
создает форму ajax, а render
отвечает за отображение результатов поиска.
class SearchResults extends CometActor {
override lazy val fixedRender: Box[NodeSeq] = {
SHtml.ajaxForm(bind("search", findKids(defaultXml, "search", "input"),
"input" -> SHtml.text("", updateSearch _)))
}
private def updateSearch(tag: String) = Log.info("UpdateSearch: " + tag)
def render = {
bind("search", findKids(defaultXml, "search", "results"),
"tag" -> "MyTag", // TODO show actual search tag
"list" -> <ul><li>Entry</li></ul>) // TODO actual search results
}
}
В принципе, этот код работает, но он отображает окно поиска под результатами, а не сверху, где я ожидал.
Полагаю, это связано с одером, в котором выполняются render
и fixedRender
. Как изменить этот код, чтобы окно поиска находилось вверху?