如何使用<f:ajax render =“”> </f:ajax> </ui:repeat>重新渲染<ui:repeat>

时间:2010-08-23 12:41:00

标签: ajax jsf jsf-2 uirepeat

我已经实现了由转发器创建的列表:

<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 个答案:

答案 0 :(得分:26)

<ui:repeat>本身不会为输出生成任何HTML。 <f:ajax render>需要HTML DOM树中存在的ID。将其放在带有<h:panelGroup>的{​​{1}}中,然后引用它。

id

答案 1 :(得分:4)

是:

答案 2 :(得分: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>

答案 3 :(得分: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>