首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态richfaces dataTable、ajax4jsf和reRendering

动态richfaces dataTable、ajax4jsf和reRendering
EN

Stack Overflow用户
提问于 2010-03-11 06:40:28
回答 2查看 3.9K关注 0票数 1

我有一个在a4j:outputPanel中定义的富dataTable,它绑定到创建HtmlDataTable的会话作用域支持bean。就其本身而言,我的那部分代码工作得很好,dataTable看起来也不错。

在页面的另一部分,有一些我创建为a4j:commandLinks的基本文本链接,当单击这些链接时,应该用新的行和列数据重新呈现dataTable。行数据更新正常,但列数据(标题文本、宽度等)不是。

在仔细研究了一下代码之后,似乎没有在该表的reRendering期间调用HtmlDataTable的支持bean,但是如果重新加载整个页面,它就是reRendered;因此,这里似乎只有ajax4jsf/reRendering部分才让我头疼。

有没有什么方法可以强制reRender进程使dataTable结构无效,以便它再次调用支持bean?

如果它有任何意义,我也在使用Seam;所以如果使用它可以找到解决方案,那也会很有帮助。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-12 02:15:22

为了后人着想,我找到了解决方案:无论何时向我的操作侦听器bean发出a4j请求,我都会让它告诉构建dataTable的bean刷新它的表。然后该bean执行一个简单的myDataTable.getParent().getChildren().remove(myDataTable).这个页面帮我弄清楚了:http://www.coderanch.com/t/213312/JSF/java/dynamic-datatable-binding

票数 1
EN

Stack Overflow用户

发布于 2010-03-11 17:53:26

在您的操作中,只需从上下文中删除会话范围的bean即可。

例如:

代码语言:javascript
复制
<a:commandLink action="#{someBean.perform}" value="Submit" reRender="myTable"/>

以及动作:

代码语言:javascript
复制
@Name("someBean")
public class SomeBean {

  public void perform() {
    //do stuff

    Contexts.removeFromAllContexts("myBean");  
  }
}

否则,如果您的搜索中填充了一个列表,那么可能只需调用dataTable ()或任何加载数据的方法就可以了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2421206

复制
相关文章

相似问题

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