Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js之前的jsf验证和bean操作之前的js验证_Javascript_Jsf_Primefaces - Fatal编程技术网

Javascript js之前的jsf验证和bean操作之前的js验证

Javascript js之前的jsf验证和bean操作之前的js验证,javascript,jsf,primefaces,Javascript,Jsf,Primefaces,JSF/PrimeFaces 3.5 我需要在单击p:commandButton时首先检查验证(InputText required=true) 我尝试过oncomplete,但它会在js弹出对话框之后调用我的bean。我不想要它 I need in this order : click p:button -> check validation -> if not fails -> show primefaces dialog. if fails after validatio

JSF/PrimeFaces 3.5

我需要在单击p:commandButton时首先检查验证(InputText required=true)

我尝试过oncomplete,但它会在js弹出对话框之后调用我的bean。我不想要它

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()"
试试这个:

<p:commandButton id="btnSalvar"
    value="abc"
    action="#{notaFiscalManagedBean.salvar}"
    update="@form"
    render="@form"/>

通过添加“render”和“update”属性,表单将必须重新加载,然后处理表单内部的所有验证

希望这能帮助你,祝你好运

最好使用primefaces,它允许用户执行从托管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()"/>

在我的oncomplete commandButton中,我从@BalusC answer()和@Tuukka Mustonen()中得到了我想要的东西,并进行了一些调整以满足我的需要

这样,如果有任何验证错误或任何转换器确实被验证,则首先在屏幕上呈现它们。如果没有验证错误,那么我执行js函数,并在其中激发bean方法(如果需要)


谢谢大家!:)

不可能。在我的commandButton中,我必须在单击时调用我的js,它忽略了调用js对话框的验证。请发布导致此问题的inputText标记。这是h:表单中的一个简单inputText。尝试添加一个标记,看看它是否有助于显示验证消息。如果确实如此,那么您应该在change中考虑它的本机验证消息以满足您的需要。该消息可以在commandButton中使用render和upate,但不幸的是,我的js对话框没有呈现,我的bean方法也被调用。hi@Jitesh。问题是我需要首先验证jsf字段,然后打开js对话框。如果我点击对话框按钮上的ok,那么我就调用我的最后一个bean方法。我试图从requestContext调用一些对话框…执行但什么都没有发生这是个好主意,但我的xhtml中有一堆jsf验证器。我必须在js中重写所有内容?调用from execute()的对话框应该可以工作,但正如您在评论中所描述的,我认为您正在使用jsf“required”属性进行验证,如果验证失败,您希望阻止用户转到服务器。但required=“true”在服务器端执行验证。由于验证失败,您的下一个事务似乎无法工作,因此您需要决定要在何处执行验证。我保留required=true和jsf验证,并在我的oncomplete命令Button facesContext中实现。validationFailed with js函数。它就像一个符咒。thx@Jitesh
<p:commandButton id="btnSalvar"
value="abc"
action="#{notaFiscalManagedBean.salvar}" 
onclick="if(validationFailed()){return false}"
oncomplete="showPF_DiagBox()"/>
    function validationFailed(){
    //Check various conditions based on component validations and return whether  validatoin  failed or not   
    }