我有一个像这样的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()。
拜托,非常感谢任何意见。
答案 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>