2014-03-13 39 views
0

JSF/PrimeFaces 3.5JSF验证和js豆行动之前

页上点击,当我需要:命令按钮来首先(需要输入文本=真)

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

在我的onComplete的commandButton我得到了我想要的答案@BalusC(How to find indication of a Validation error (required="true") while doing ajax command)和@Tuukka穆斯托宁得到(JSF 2.0 AJAX: Call a bean method from javascript with jsf.ajax.request (or some other way))并进行一些调整以适应我的需求。

这样,如果有任何验证错误或任何转换器被验证,它们首先在屏幕上呈现。如果没有验证错误,所以我执行我的js函数,并在其内部启动我的bean方法(如果需要的话)。

感谢大家! :)

0

试试这个:

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

通过添加“渲染”和“更新”归咎于你的形式将不得不重新加载,然后处理所有的验证它里面的形式。

希望这可以帮助你,祝你好运!

+0

没办法。在我的commandButton中,我必须在点击时调用我的js,并忽略调用js对话框的验证 – Al2x

+0

请发布导致此问题的inputText标记。 – N0nbot

+0

它是一个简单的inputText在h:form里面。它是 Al2x

1

对于允许用户执行从托管bean设置的javascript的primefaces的用户RequestContext更好。您可以通过在#{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 
    } 
+0

hi @Jitesh。问题是我需要首先验证jsf字段,然后打开js对话框。如果我在对话框按钮上单击确定,所以我打电话给我的最后一个bean方法。 – Al2x

+0

我试图从requestContext调用一些对话框...执行但没有任何反应 – Al2x

+0

这是一个重要的想法,但我在我的xhtml中有一堆jsf验证器。我将不得不重写所有的js? – Al2x