Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.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 alert(),阻止页面提交,直到用户单击";好吧;?_Javascript_Ajax_Jsf_Primefaces - Fatal编程技术网

如何有条件地显示Javascript alert(),阻止页面提交,直到用户单击";好吧;?

如何有条件地显示Javascript alert(),阻止页面提交,直到用户单击";好吧;?,javascript,ajax,jsf,primefaces,Javascript,Ajax,Jsf,Primefaces,我有这样一个命令按钮: <p:commandButton value="Save" actionListener="#{bean.checkDetails}" action="#{bean.save}" /> RequestContext context = RequestContext.getCurrentInstance(); context.execute("alert('Details are not Complete.')"); 我的问题是我没有看到alert()对话框

我有这样一个命令按钮:

<p:commandButton value="Save" actionListener="#{bean.checkDetails}" action="#{bean.save}" />
RequestContext context = RequestContext.getCurrentInstance();
context.execute("alert('Details are not Complete.')");
我的问题是我没有看到alert()对话框,无论checkDetails()方法的状态如何,都会调用bean.save

我是不是走错了路?到目前为止,我已经在这上面花了三个小时,我完全被卡住了。如果删除action方法,alert()会很好地弹出

如果您有任何意见,我们将不胜感激

My checkDetails()方法检查页面上的某些字段,如果这些字段没有填写

正如BalusC所说,通过向这些字段添加
required=“true”
,可以很容易地解决这个问题,而无需为此编写Java

如果您想将其与“旧scool”
alert()
混用,可以使用
validationFailed
回调参数:

<h:form>
    <p:inputText required="true" />
    <p:commandButton value="submit" oncomplete="handleValidation(xhr, status, args)" />
</h:form>
<script type="text/javascript">
    function handleValidation(xhr, status, args)
    {
        if(args.validationFailed)
        {
            alert('Details are not Complete.');
        }
    }
</script>

功能手柄(xhr、状态、参数)
{
if(args.validationFailed)
{
警报(“详细信息不完整”);
}
}

在提交笨拙而陈旧的文件之前,可能需要防止默认值或返回false。为什么不使用JSF(甚至PrimeFaces)内置的验证和消息传递工具呢?在验证失败的情况下,操作方法甚至不会被命中,模型值也不会被更新。JSF提供的最简单的验证就是将
required=“true”
放入适当的输入组件中。使用PrimeFaces
,您将通过ajax获得即时验证消息。另请参见此展示示例:感谢BalusC,但我正在以类似的方式重新创建应用程序。事实上,我已经对许多字段使用了
required=“true”
。我只需要显示这个Javascript alert(),我只想阻止action方法的执行,而不是完全停止它。只要用户在alert()上按OK,操作方法就会执行。我需要更多的操作来处理页面上的值,而不仅仅是简单的
required=“true”
。我想在支持bean中运行一个能够弹出JS alert()的方法,然后当该方法完成时,我想执行action方法。@peetss也许您应该指定要对字段执行的操作。;-)