我正在使用Bootsfaces,并且已经定义了一个组件,例如:
<b:commandButton type="button" styleClass="btn-sm"
value="ACTION"
update="idC1 idC2" onsuccess="something()"
actionListener="#{myBean.myaction}" />
我想要的是myaction()强制执行Ajax错误,以确保运行某事()
void myaction() {
if (condition) {
success();
else
notsuccess();
}
据我所知,验证错误不会导致Ajax错误。对?即使抛出Faces验证异常,也会运行Onsuccess脚本。因此它必须存在另一种方式。
有人可以帮助我吗?
我将以开球示例开始,稍后将解释该示例的各个部分。
void myAction() {
var validationFailed = #{facesContext.validationFailed};
if (!validationFailed) {
success();
} else {
fail();
}
}
因此基本上,表达式#{facesContext.validationFailed}
用于检查验证是否失败。这将与其他所有EL表达式一样求值,并且将输出true
或false
。
重要的是,每个ajax请求都重新呈现此脚本,因为否则该表达式在开始时仅被评估一次,并且将永远永远自动false
。
也仅当文件包含在a:中时,才可以在js / css中混合EL:
h:outputScript
@ResourceDependency
script
通过h:outputScript
添加脚本,并给update
赋予一个ID。
将代码放在<script>
中,并将其包含在表单/父项中。然后update
表格/父母。
另请参见:
JSF: Validation failed javascript callback