【发布时间】:2011-04-02 15:11: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 标签或可以重新渲染的东西???
...
感谢您的帮助
【问题讨论】:
-
也许我必须将操作方法 (overviewController.filterNew) 放入 ajax 标记中? - 试试看,为什么不呢?
-
也不行!如果没有人看到错误,可能存在 jsf/ajax 错误?