Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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/2/jsf-2/2.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确认框,则不执行JSF`action`?_Jsf_Jsf 2_Primefaces - Fatal编程技术网

如果使用javascript确认框,则不执行JSF`action`?

如果使用javascript确认框,则不执行JSF`action`?,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我正在使用jsf PrimeFaces(V3.5.0)库。 选择javascript确认框OK按钮后,以下代码不会执行delete <p:commandLink id="deletePGLinkId" action="#{PresetGroupMgmtBean.delete}" onclick="return confirm('Preset Group will be removed. Are you sure you want to continue?');" u

我正在使用jsf PrimeFaces(V3.5.0)库。 选择javascript确认框
OK
按钮后,以下代码不会执行
delete

<p:commandLink id="deletePGLinkId"
    action="#{PresetGroupMgmtBean.delete}"
    onclick="return confirm('Preset Group will be removed. Are you sure you want to continue?');"
    update=":pmForm:presetPanel :pmForm:messagePanel">
      <f:param value="#{item.value.ID}" name="deleteID"></f:param>
      <h:graphicImage alt="Delete Image" style="border: none" value="./images/x.png" />  
</p:commandLink>

我希望避免使用PrimeFaces
ConfirmDialog
,因为我有太多的确认,并且为每个确认都编写一个
ConfirmDialog
。Javascript框看起来很简单,但不起作用


为什么不执行
delete

这在PrimeFaces命令链接渲染器中有点设计缺陷。仔细查看生成的HTML输出:

onclick="return confirm('Sure?');;PrimeFaces.ab({source:'formId:linkId'});return false;"
onclick="jsf.util.chain(this,event,'return confirm(\'Sure?\');','mojarra.jsfcljs(document.getElementById(\'formId\'),{\'formId:linkId\':\'formId:linkId\'},\'\')');return false"
你现在看到了吗?负责提交表单的
PrimeFaces.ab()
将永远不会以这种方式被调用!您需要以不同的方式编写条件:

onclick="if (!confirm('Sure?')) return false;"
通过这种方式,最终将生成HTML,如下所示:

onclick="if (!confirm('Sure?')) return false;;PrimeFaces.ab({source:'formId:linkId'});return false;"
这样,当
confirm()
返回
true
时,它将正确地继续
PrimeFaces.ab()
(然后它将不会调用
return false;
语句)

Mojarra为此使用
jsf.util.chain()
。将
替换为
,您将在生成的HTML输出中看到它:

onclick="return confirm('Sure?');;PrimeFaces.ab({source:'formId:linkId'});return false;"
onclick="jsf.util.chain(this,event,'return confirm(\'Sure?\');','mojarra.jsfcljs(document.getElementById(\'formId\'),{\'formId:linkId\':\'formId:linkId\'},\'\')');return false"

这样,您的初始构造就可以工作。

在Firefox 22上为我工作,看起来更像是JSF错误,如果您删除
确认
,您的代码是否工作?@landal:抱歉,但这真是胡说八道。@Alexandre:哪个PF版本?这个错误至少出现在3.5及之前的版本中。@BalusC我正在使用PrimeFaces 3.5,但实际上正在搜索它是否是3.5.XNo,一个简单的3.5版本,jar是PrimeFaces-3.5.jar。。。我注意到
onclick=“return-confirm('Sure');;PrimeFaces.ab({source:'formId:linkId'));return-false;“
但它工作正常。非常有效,谢谢。事实上,我有一行代码不起作用:
onclick=“if(confirm('位置将被删除。是否确实要继续?){return true;}否则{return false;}”
。根据您的建议,此操作有效:
onclick=“if(!confirm(!Location)将被删除。您确定要继续吗?”){return false;}”
。还有一个问题:当选择
OK
时,我曾执行block UI
bui()
onclick=“if(confirm('Location)将被删除。您确定要继续吗?”){bui.show();return true;}否则{return false;}“
。似乎不再可能了?您不应该再返回true。从onclick返回将阻止调用onclick代码的其余部分。使用以下命令:
onclick=“if(!confirm('Sure?'))return false;bui.show();“
。或者,放置
bui.show()
onstart
中。好的,
onstart=“bui.show()
工作正常。这就解决了所有问题,谢谢。