首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ajax按钮和在Primefaces datascroller中渲染?

Ajax按钮和在Primefaces datascroller中渲染?
EN

Stack Overflow用户
提问于 2015-02-24 00:12:54
回答 1查看 1.3K关注 0票数 0

我有一个Primefaces [<p:dataScroller />][2],我用它来显示延迟加载的项的列表。我的JSF代码看起来像这样:

代码语言:javascript
复制
<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提交,但只重新呈现被单击的项。我的后退操作将更新我的项的状态,并且我将根据此状态显示不同的消息。我想我可以这样做:

代码语言:javascript
复制
<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上的链接,有没有办法只呈现那个项目?有没有更好的方法来处理这个用例?还是我完全卡住了?

EN

回答 1

Stack Overflow用户

发布于 2015-02-24 02:00:58

你不需要动态id,你可以使用PrimeFaces selectors,它是专门为这种情况设计的。所以你可以通过类或其他方式来引用父类。完整的jquery selector api可供您灵活使用!只是不确定它是否可以与h:commandButton和f:ajax一起使用(也许h:commandButton和p:ajax也可以)。但肯定有效的是

代码语言:javascript
复制
<p:commandButton update="@(:parent)" value="update parent" />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28678097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档