标准JSF API中没有类似的东西。 在PrimeFaces中也没有想到。 对于PrimeFaces,请参阅最后的更新
但是OmniFaces
<o:componentIdParam>可能正是您要寻找的。它允许您让JSF根据特定的请求参数仅呈现组件树的子集,该参数可以是组件ID或客户机ID。您基本上可以只使用jQuery
$.get()来
<ui:repeat>将start索引和start索引一起重新加载为请求参数,然后使用jQuery
$.append()将其附加到HTML DOM。
这是一个完整的启动示例。风景:
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml" xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:o="http://omnifaces.org/ui"> <f:metadata> <o:componentIdParam componentIdName="componentId" /> </f:metadata> <h:head> <title>Stack Overflow Question 11364006</title> <script src="http://pre.jquery.com/jquery-latest.min.js"></script> <!-- Substitute with PrimeFaces' one, if necessary. --> </h:head> <h:body> <ul id="items"> <ui:repeat id="itemsRepeater" value="#{bean.items}" var="item"> <li>#{item}</li> </ui:repeat> </ul> <input type="button" id="showMore" value="Show more"/> <h:outputscript> $("#showMore").click(function() { $items = $("#items"); var params = { start: $items.find("li").length, componentId: "itemsRepeater" }; $.get(location, params, function(html) { $items.append(html); }); }); </h:outputscript> </h:body></html>支持豆:
@ManagedBean@RequestScopedpublic class Bean { private List<String> items; @ManagedProperty("#{param.start}") private int start; @PostConstruct public void init() { // Just a stub. Do your thing to fill the items. items = new ArrayList<String>(); int size = start + 10; for (int i = start; i < size; i++) { items.add("item " + (i + 1)); } } public void setStart(int start) { this.start = start; } public List<String> getItems() { return items; }}更新
:现场演示可以的“扩展列表”的例子中找到的
<o:componentIdParam>当前展示应用程序的页面。
更新2) :PrimeFaces
p:datascroller具有“按需滚动”的延迟加载



