如何有条件地显示阻止页面提交直到用户单击“确定”的Javascript警报()?

时间:2012-12-12 01:28:12

标签: javascript ajax jsf primefaces

我有一个像这样的commandButton:

<p:commandButton value="Save" actionListener="#{bean.checkDetails}" action="#{bean.save}" />

我的checkDetails()方法检查页面上的某些字段,如果没有填写,请使用RequestContext触发Javascript alert(),我想用它来阻止bean.save被调用,直到用户点击“OK” ”。 RequestContext片段如下所示:

RequestContext context = RequestContext.getCurrentInstance();
context.execute("alert('Details are not Complete.')");

我的问题是我没有看到alert()对话框,并且无论checkDetails()方法的状态如何,都会调用bean.save。

我是否完全以错误的方式解决这个问题?到目前为止,我花了三个小时才完成这个问题,而且我很平静。如果我删除了动作方法,则会弹出alert()。

拜托,非常感谢任何意见。

1 个答案:

答案 0 :(得分:0)

  

我的checkDetails()方法检查页面上的某些字段以及它们是否未填写...

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

如果您想将其与'old-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>