jQuery表单提交不能在JSF中工作吗?

问题描述

| 我有一个JSf表单,我正在尝试使用jQuery Ui对话框插件提交表单。 这是代码段。
function confirmSubmit() {
          $(\'#dialog\').dialog(\'open\');
          return false;
      }

    $(\'#dialog\').dialog({
        autoOpen : false,width : 400,modal : true,resizable : false,buttons : {
            \"Submit Form\" : function() {
                 document.myForm.submit();
            },\"Cancel\" : function() {
                $(this).dialog(\"close\");
            }
        }
    });
<h:form id=\"myForm\"> 
<h:commandLink action=\"#{Bean.search}\" type=\"submit\" onclick=\"return confirmSubmit()\"   id=\"search\" styleClass=\"buttonSearch\">
                 </h:commandLink>    
对话框中的\“ document.myForm.submit(); \”部分不起作用,即,没有调用到达服务器,并且在服务器控制台中我看到了错误:   11:45:32,738严重[生命周期]   JSF1054 :(阶段ID:RENDER_RESPONSE 6,   查看ID:/PRT01/IMCM0101.jsp)   在阶段期间引发异常   执行:   javax.faces.event.PhaseEvent [source=com.sun.faces.lifecycle.LifecycleImpl@ec333b] 该对话框正确显示,但是一旦按下提交按钮\“ document.myForm.submit(); \”,就会执行代码,并且不提交表单,而是服务器控制台上出现上述错误。     

解决方法

        因为您
return false;
,它实际上不会提交。 使ѭ2起作用
    $(document).ready(function() {
    var $dialog = $(\'<div></div>\')
        .html(\'This dialog will show every time!\')
        .dialog({
            autoOpen : false,width : 400,modal : true,resizable : false,buttons : {
                              \"Submit Form\" : function() {
                                       document.myForm.submit();
                               },\"Cancel\" : function() {
                                       $(this).dialog(\"close\");
                                }
                           }
                });


});
然后打电话
 function confirmSubmit() {
      $dialog.dialog(\'open\');
      return false;
  }
    ,        完成后,缺少一些JSF参数。 jsf在表单提交期间添加的内容,我使用jQuery添加了它们:
$(\"a[id$=\'search\']\").click(function() {
    var input = $(\"<input>\").attr(\"type\",\"hidden\").attr(\"name\",\"myForm:search\").val(\"myForm:search\");
    $(\'#myForm\').append($(input));
    $(\"p#dialog-email\").html(titleVar);
    $(\'#dialog\').dialog(\'open\');
});