1

Comet とLift Frameworkを使用した学習実験として、単純な検索アプリケーションを構築しようとしています。計画では、テキスト エントリと検索結果用のスペースを備えたページを作成する予定です。検索用語が入力されると、それは ajax リクエストとして送信され、結果はサーバーによってプッシュバックされ、同じページにレンダリングされる必要があります。サーバーがさらに結果を見つけたら、それらをクライアントにプッシュする必要があります。

テンプレートとしてComet Chat Demoを使用して、次のテンプレートから ajax フォームと検索結果の両方をレンダリングする CometActor を用意しました。

<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 アクターは、これを 2 つの部分でレンダリングします: fixedRenderajax フォームを生成し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
     }
}

原則として、このコードは機能しますが、検索ボックスが結果の下に表示され、予想される場所の上には表示されません。

これは、renderfixedRenderが実行される順序に関係していると思います。このコードを変更して、検索ボックスを上部に配置するにはどうすればよいですか?

4

1 に答える 1

0

CssSelectors を見てください。しかし、この質問は今では時代遅れになっていると思います;) また、CssSelectors は 09 年には利用できませんでした。

于 2011-10-08T10:12:21.563 に答える