首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >只有在验证通过时,才有条件地使用ajax呈现组件

只有在验证通过时,才有条件地使用ajax呈现组件
EN

Stack Overflow用户
提问于 2015-05-30 16:31:08
回答 1查看 2.6K关注 0票数 2

我正在使用JSF2.2,我想知道是否有一种方法,只有在验证通过时,才有条件地使用ajax呈现组件。通过使用ajax的render属性,不管验证通过与否,组件都将呈现出来。我想要的是:

代码语言:javascript
运行
复制
<f:ajax ... render="#{validationHasPassed ? 'foo' : ''}" />
...
<h:panelGroup id="foo">
          <!-- other components here -->
  </h:panelGroup>

是否有可能以类似的方式有条件地呈现组件?在我的示例中,我不希望在片段中使用呈现的属性,并将其设置为true或false,因为如果验证失败,则该片段在DOM中根本不存在。我可能有特定的css样式,例如在panelGroup内部的组件中,这些组件是在与页面交互后通过jQuery获得的,如果验证失败,我不希望呈现该部分,这样它就可以保持当前的可视状态。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-31 08:18:32

您可以使用FacesContext#isValidationFailed()。如果验证在当前JSF生命周期中失败,它将返回trueFacesContext的当前实例也可以作为#{facesContext}在EL中使用。

只需在rendered属性中签入它并更新它的父占位符组件即可。请注意,您不能有条件地呈现一个组件,该组件本身就将rendered属性设置为JavaScript,否则将无法找到和更新它。您的理论<f:ajax>尝试也会以同样的方式失败。

例如。

代码语言:javascript
运行
复制
<f:ajax ... render="foo-holder" />
...
<h:panelGroup id="foo-holder">
    <h:panelGroup id="foo" rendered="#{not facesContext.validationFailed}">
        Validation has not failed.
    </h:panelGroup>
</h:panelGroup>

必要时添加layout="block",使其成为<div>组件,而不是<span>组件,这取决于最终的标记。

另请参阅:

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

https://stackoverflow.com/questions/30548586

复制
相关文章

相似问题

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