JSF / PrimeFaces 3.5
我需要点击p:commandButton来首先检查验证(输入文本required = true)
if validationFail == false then
Call the popup dialog from js :
else
show requiredMessage from inputText (this field is mandatory...)
我尝试过oncomplete,但它调用了我的bean并在js弹出对话框之后。我不想要它。
I need in this order : click p:button -> check validation -> if not fails -> show primefaces dialog.
if fails after validation-> render message
我的xhtml:
<p:commandButton id="btnSalvar"
value="abc"
action="#{notaFiscalManagedBean.salvar}"
oncomplete="if (args.validationFailed) return true; else return showPF_DiagBox()"
在我的showPF对话框中,我调用了bean方法。如果用户单击确定。
答案 0 :(得分:1)
最好是用户RequestContext允许用户执行从托管bean设置的javascript。您可以在#{notaFiscalManagedBean.salvar}
修改您的方法来使用它,如下所示。
public String salvar(){
boolean valid=true;
//Do your validation here
if(valid){
RequestContext.getCurrentInstance().execute("showPF_DiagBox()");
}
}
如果您想在向服务器提交请求之前在客户端进行验证,那么只需在代码中进行以下更改,
<p:commandButton id="btnSalvar"
value="abc"
action="#{notaFiscalManagedBean.salvar}"
onclick="if(validationFailed()){return false}"
oncomplete="showPF_DiagBox()"/>
还记下一个javascript函数来进行验证
function validationFailed(){
//Check various conditions based on component validations and return whether validatoin failed or not
}
答案 1 :(得分:0)
试试这个:
<p:commandButton id="btnSalvar"
value="abc"
action="#{notaFiscalManagedBean.salvar}"
update="@form"
render="@form"/>
通过添加'render'和'update',您的表单必须重新加载,然后处理其表单内的所有验证。
希望这可以帮到你,祝你好运!
答案 2 :(得分:0)
在我的oncomplete commandButton中,我从@BalusC回答(How to find indication of a Validation error (required="true") while doing ajax command)和@Tuukka Mustonen(JSF 2.0 AJAX: Call a bean method from javascript with jsf.ajax.request (or some other way))得到了我想得到的东西并做了一些调整以满足我的需要。
这样,如果有任何验证错误或任何转换器都要验证,它们首先会在屏幕上呈现。如果没有验证错误,那么我执行我的js函数并在其中我根据需要激活我的bean方法。
谢谢大家! :)