11

リピーターによって作成されたリストを実装しました。

<ui:repeat value="#{projectData.paginator.list}" var="project">
  <h:outputText value="#{project.title}" />
</ui:repeat>

そして私のリストをフィルタリングするボタン:

<h:commandLink action="#{overviewController.filterNew}">
<h:outputText value="Filter List" />
</h:commandLink>

それで、コマンドリンクをクリックした後に私のリピーターだけをレンダリングする簡単な方法はありますか(AJAXを使用):-)


私は次のことを試しました:

<f:ajax render="repeater">
ui:repeat id="repeater" value="#{projectData.paginator.list}" var="project">
  <h:outputText value="#{project.title}" />
</ui:repeat>
<f:ajax />


<h:commandLink action="#{overviewController.filterNew}">
<h:outputText value="Filter List" />
<f:ajax event="click" render="repeater"/>
</h:commandLink>

しかし、それはうまくいきませんでした..


アップデート

<h:form>
ui:repeat id="repeater" value="#{projectData.paginator.list}" var="project">
  <h:outputText value="#{project.title}" />
</ui:repeat>

<h:commandLink action="#{overviewController.filterNew}">
<h:outputText value="Filter List" />
<f:ajax event="click" render="repeater"/>
</h:commandLink>
</h:form>

どちらも機能しません...アクションメソッド(overviewController.filterNew)をajaxタグに入れなければならないのでしょうか?


更新 2

    <f:ajax event="click" render="repeater">
    <h:commandLink action="#{overviewController.filterEBus}">
    <h:outputText value="EBusiness" />
    </h:commandLink>
    </f:ajax>

どちらも機能しません!


リピーターを再レンダリングすることはできないのでしょうか? div タグなど、再レンダリングできる別の要素はありますか?

...

ご協力ありがとうございました

4

4 に答える 4

27

それ<ui:repeat>自体は、出力にHTMLを生成しません。は<f:ajax render>、HTMLDOMツリーに存在するIDを必要とします。<h:panelGroup>と一緒に入れて、id代わりに参照してください。

<h:form>
    <h:panelGroup id="projects">
        <ui:repeat value="#{projectData.paginator.list}" var="project">
            <h:outputText value="#{project.title}" />
        </ui:repeat>
    </h:panelGroup>
    <h:commandLink action="#{overviewController.filterNew}">
        <h:outputText value="Filter List" />
        <f:ajax execute="@form" render="projects" />
    </h:commandLink>
</h:form>
于 2010-08-24T11:21:27.183 に答える
4

はい:

于 2010-08-23T12:48:28.817 に答える
2
<f:ajax render="repeater">
ui:repeat id="repeater" value="#{projectData.paginator.list}" var="project">
  <h:outputText value="#{project.title}" />
</ui:repeat>
<f:ajax />

なぜ f:ajax でラップしたのですか? この場合は冗長です。

<h:form>コンポーネントがタグで囲まれていることを確認してください

<h:form>
<ui:repeat id="repeater" value="#{projectData.paginator.list}" var="project">
  <h:outputText value="#{project.title}" />
</ui:repeat>

<h:commandLink action="#{overviewController.filterNew}">
<h:outputText value="Filter List" />
<f:ajax event="click" render="repeater"/>
</h:commandLink>
</h:form>
于 2010-08-23T15:23:18.787 に答える
0

これはどう:

<ui:repeat id="repeater" value="#{projectData.paginator.list}" var="project">
  <h:outputText value="#{project.title}" />
</ui:repeat>

<h:commandLink>
  <h:outputText value="Filter List" />
  <f:ajax render="repeater" listener="#{overviewController.filterNew}" />
</h:commandLink>
于 2010-08-24T11:31:03.037 に答える