Ajax只在元素存在时呈现



我有以下使用情况:我在屏幕上有一个按钮,它呈现另一个元素。

<h:commandButton value="button">
  <f:ajax  execute="@this" render="toBeRendered" />
</h:commandButton>
......
<h:outputPanel id="toBeRendered"/>

我的问题是,这另一个元素(toBeRendered)并不总是存在,因为它是在页面上的ui组成,所以JSF失败时,它构建视图,不能找到元素的呈现属性的f:ajax标签。我知道新版本的mojarra不再有这个验证,但更新不是一个选项。有没有人有一个解决方案,使它只渲染当其他元素存在?

使用UIComponent#findComponent()找到它,然后打印它的ID。如果找不到,那么无论如何都要考虑null

<h:commandButton ...>
    <f:ajax ... render="#{component.findComponent('toBeRendered').id}" />
</h:commandButton>
...
<h:panelGroup id="toBeRendered" />

注意#{component}是一个隐式EL对象,引用当前的UIComponent实例。因此,代码是完整的。


与具体问题无关,应该注意的是Mojarra 2.2.5+中缺失的<f:ajax>验证将在稍后的issue 1372中返回。

相关内容

  • 没有找到相关文章

最新更新