【问题标题】:How to find an component ID including the composite component ID from backing bean如何从支持 bean 中查找包含复合组件 ID 的组件 ID
【发布时间】:2015-09-23 11:47:34
【问题描述】:

我们的项目使用PF5.1,我们在一个复合组件中有一个dataTable。所以在页面渲染之后。 dataTable 的 id 有点像 j_idt123:tableForm:tableId。

我们需要在搜索之前清除表格过滤器的东西。我尝试使用以下代码在支持 bean 中找到它,但它返回 null

FacesContext.getCurrentInstance().getViewRoot().findComponent("tableId");

由于这个组件会在不同的 xhtml 文件中使用,这个“j_idt123”的东西每次都会改变。获得桌子的正确方法是什么?

【问题讨论】:

  • 您可能想退后一步,具体重新询问“我们需要在搜索前清除表格过滤器内容” 问题,而不是尝试解决那个问题。可能有更好的方法来解决不需要手动从树中抓取组件的“过滤东西”问题(你应该尽量避免在支持 bean 中)。
  • @BalusC 我尝试使用 PF('datatableWidgetVar').clearFilters() 清除表过滤,但似乎不起作用,然后我想在服务器端清除它。当表 id 是静态的但不确定如何在复合组件中获取该数据表时,它将起作用。
  • 也许这个问题的top answer可以帮到你:stackoverflow.com/questions/23797476/…
  • @sinclair 谢谢。我会接受你的回答

标签: jsf jsf-2 composite-component clientid


【解决方案1】:

“j_idt123”是为没有指定自己的组件生成的 id。 只需给“tableForm”的父容器一个id。

【讨论】:

  • 我已经给tableForm一个Id,j_idt123来自包含tableForm的复合组件。
  • 答案并没有说你必须在tableForm上指定它,而是在它的父容器上。
猜你喜欢
  • 2015-02-26
  • 2011-07-23
  • 1970-01-01
  • 2014-11-07
  • 2012-04-09
  • 2011-06-04
  • 2012-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多