0

我有一个这样的命令按钮:

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

我的 checkDetails() 方法检查页面上的某些字段,如果未填写,则使用 RequestContext 触发 Javascript alert(),我想用它来阻止 bean.save 被调用,直到用户单击“确定”。RequestContext 部分如下所示:

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

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

我会以完全错误的方式解决这个问题吗?到目前为止,我已经花了三个小时在这上面,我完全被困住了。如果我删除 action 方法,alert() 会弹出就好了。

请,任何输入将不胜感激。

4

1 回答 1

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>
于 2012-12-12T12:38:44.263 回答