2009-11-28 18 views
2

我在JSF中使用jQuery对话框和Ajax提交时遇到了问题。 我有显示对话窗口下面的代码:JQuery,JSF和a4j:commandLink

   <script type="text/javascript"> 
         jQuery(function(){ 
           // Dialog 
           jQuery('#dialog').dialog({ 
             dialogClass: 'alert', 
             autoOpen: false, 
             width: 300, 
             height: 150, 
             modal: true, 
             resizable: false, 
             overlay: { 
               backgroundColor: '#000', 
               opacity: 0.5 
             }, 
             buttons: { 
               "Ok": function() { 
                 jQuery(this).dialog("close"); 
                 return true; 
               }, 
               "Cancel": function() { 
                 jQuery(this).dialog("close"); 
                 return false; 
               } 
             } 
           }); 

           // Dialog Link 
           jQuery('#dialog_link').click(function(){ 
             jQuery('#dialog').dialog('open'); 
             return false; 
           }) 
           .hover( 
             function() { jQuery(this).addClass('ui-hover-state'); }, 
             function() { jQuery(this).removeClass('ui-hover-state'); } 
           ); 

         }); 
       </script> 
It works as it should - it displays box when link is clicked. 
Now, I have something like this, for deleting something: 
<a4j:commandLink 
     actionListener="#some.action" 
     reRender="something" 
     onclick="if(!jQuery('#dialog').dialog('open')){return false}" 

ok, this commandLink is rendered as follows: 
<a href="#" 
     id="some:long:id:j_id338" 
     name="formName:something:j_id338" 
     onclick="if(!jQuery('#dialog').dialog('open')){return 
false};A4J.AJAX.Submit('something:something'); 
     return false;" 
>drop</a> 

现在,显示该对话框之后,A4j.AJAX.Submit(..)是执行 ,反正是有,我可以举例来说,将整个 A4J.AJAX.Submit(...)传递给“对话框”并从“ok”选项执行它? 我只需要执行提交,当且仅当用户点击确定。 谢谢大家帮忙 JQ

回答

4

您可以定义:

<a4j:jsFunction name="okClicked" 
    actionListener="#{some.action}" 
    reRender="something" /> 

,并调用它在OK功能,如:

"Ok": function() { 
    jQuery(this).dialog("close"); 
    okClicked(); 
    return true; 
} 
+0

它为我的作品非常好:-)谢谢 – JQueryNeeded 2010-03-18 10:19:50

+1

@JQueryNeeded在stackoverflow你应该标记为您接受的答案。这是通过投票柜台下面的勾号完成的。 – Bozho 2010-03-18 10:36:36

+0

当然,完成:-) – JQueryNeeded 2010-03-18 14:27:03