如何在BootsFaces命令按钮成功时检查验证错误?

问题描述 投票:0回答:1

我正在使用Bootsfaces,并且已经定义了一个组件,例如:

<b:commandButton type="button" styleClass="btn-sm"
   value="ACTION"
   update="idC1 idC2" onsuccess="something()"
    actionListener="#{myBean.myaction}" />

我想要的是myaction()强制执行A​​jax错误,以确保运行某事()

void myaction() {
if (condition) {
     success();
else 
     notsuccess();
}

据我所知,验证错误不会导致Ajax错误。对?即使抛出Faces验证异常,也会运行Onsuccess脚本。因此它必须存在另一种方式。

有人可以帮助我吗?

jsf commandbutton bootsfaces validationerror
1个回答
0
投票

我将以开球示例开始,稍后将解释该示例的各个部分。

void myAction() {
    var validationFailed = #{facesContext.validationFailed};

    if (!validationFailed) {
        success();
    } else {
        fail();
    }
}

因此基本上,表达式#{facesContext.validationFailed}用于检查验证是否失败。这将与其他所有EL表达式一样求值,并且将输出truefalse

重要的是,每个ajax请求都重新呈现此脚本,因为否则该表达式在开始时仅被评估一次,并且将永远永远自动false


也仅当文件包含在a:中时,才可以在js / css中混合EL:

  • h:outputScript
  • @ResourceDependency
  • 不包含文件的普通script

1。解决方案

通过h:outputScript添加脚本,并给update赋予一个ID。

2。解决方案

将代码放在<script>中,并将其包含在表单/父项中。然后update表格/父母。


另请参见:

JSF: Validation failed javascript callback

Mixing JSF EL in a JavaScript file

Is JSF validation client-side or server-side?

© www.soinside.com 2019 - 2024. All rights reserved.