我已经实现了一个由中继器创建的列表:
<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 标签或可以重新渲染的东西???
...
感谢您的帮助
最佳答案
<ui:repeat>
本身不会为输出生成任何 HTML。 <f:ajax render>
需要一个存在于 HTML DOM 树中的 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>
关于ajax - 如何重新渲染 <ui :repeat> using <f:ajax render>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3547581/