问题:
  在JSF页面中,在触发一个动作之前弹出一个确认对话框(例如:删除一条记录,取消编辑)。
解决方式:
  使用JavaScript中的confirm()方法实现!
  如果有更好的方式,希望能够分享!
实现:
  1、对于<h:commandLink>组件: 
   
<h:commandLink action="#{bookingShip.affirmBook}" 
      onclick="if (!confirm('#{msgs.confirm_areYouSure}')) return false;">
      <h:outputText value="#{msgs.button_submit}" rendered="#{task.mxdStateN<1}"/>
</h:commandLink> 
  上述代码中:#{msgs.confirm_areYouSure},在资源文件中为:“您确认这样做吗?”
  解析成HTML后:
 
<a href="#" onclick="
         var a=function(){
             if (!confirm('您确认这样做吗?')) 
                  return false;
         };
         var b=function(){
             if(typeof jsfcljs == 'function'){
                 jsfcljs(document.forms['j_id_jsp_1722095761_5'],'j_id_jsp_1722095761_9:3:j_id_jsp_1722095761_45,j_id_jsp_1722095761_9:3:j_id_jsp_1722095761_45','');
             }
             return false
         };
        return (a()==false) ? false : b();">
    提交
  </a> 
  
  屏幕显示:
  
  2
、对于<h:commandButton>组件:
 
<h:commandButton onclick="if (!confirm(#{msgs.confirm_areYouSure}')) return false"/>

  在这里的commandButton被解析成了一个提交按钮。如果javaScript返回true值这个表单会被提交,如果返回false将会忽略表单的提交。