我有一个Primefaces [<p:dataScroller />][2],我用它来显示延迟加载的项的列表。我的JSF代码看起来像这样:
<p:dataScroller id="scroller" value="#{myAction.myDataModel}" var="item" lazy="true" chunkSize="10">
<section>
<h3>Here is my item : <h:outputText value="#{item.name}" /></h3>
</section>
</p:dataScroller>这段代码可以正常工作。我的支持代码能够根据需要延迟加载数据库中的项,而不是一次提取所有项并在客户端分页。但是,现在我想在datascroller中添加一个<h:commandLink />并执行Ajax提交,但只重新呈现被单击的项。我的后退操作将更新我的项的状态,并且我将根据此状态显示不同的消息。我想我可以这样做:
<p:dataScroller id="scroller" value="#{myAction.myDataModel}" var="item" lazy="true" chunkSize="10">
<section>
<h:panelGroup id="#{item.name}" layout="block">
<h3>Here is my item : <h:outputText value="#{item.name}" /></h3>
<h:commandLink action="#{myAction.foo()}" value="Click here">
<f:ajax render="#{item.name}" />
</h:commandLink
</h:panelGroup>
</section>
</p:dataScroller>...however,我现在了解到我不能在JSF中使用动态ID,因此我的<h:panelGroup />呈现失败。我可以将<f:ajax />的render属性值设置为我的JSF表单,但这会从头开始重新呈现所有内容,这并不是我们想要的行为。
如果我有100个项目显示在我的<p:dataScroller />中,我点击了项目30上的链接,有没有办法只呈现那个项目?有没有更好的方法来处理这个用例?还是我完全卡住了?
发布于 2015-02-24 02:00:58
你不需要动态id,你可以使用PrimeFaces selectors,它是专门为这种情况设计的。所以你可以通过类或其他方式来引用父类。完整的jquery selector api可供您灵活使用!只是不确定它是否可以与h:commandButton和f:ajax一起使用(也许h:commandButton和p:ajax也可以)。但肯定有效的是
<p:commandButton update="@(:parent)" value="update parent" />https://stackoverflow.com/questions/28678097
复制相似问题