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

时间:2014-03-13 16:56:33

标签: javascript jsf primefaces

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方法。如果用户单击确定。

3 个答案:

答案 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方法。

谢谢大家! :)