如果Java Script放置在h:panelGroup中,则不会调用h:commandLink



下面是代码,

<h:panelGroup rendered="#{myBean.showDialogBox}"> //Boolean value from bean decides
//if Jquery Dialog box has to be shown or not for this User.
<script type="text/javascript">
/* <![CDATA[ */

   var $h=jQuery.noConflict();          
   function myFunction() 
   {
        $h(document).ready(function() {
            $h("#someDivID").dialog({
                // Dialog box attributes go here
        });
   }
   myFunction();  // Call myFunction to render Jquery Dialog box
/* ]]> */
</script>

<div id="someDivID"> //Below JSF component gets displayed inside Jquery Dialog box
    <h:commandLink value="Click Here" action="#{myBean.someMethod}"></h:commandLink>
</div>
</h:panelGroup>

问题:如果我删除h:panelGroup,我的h:commandLink工作良好(调用bean方法)。但是,我不能删除h:panelGroup,因为这个对话框只能根据预定义的条件显示给少数用户。我想利用h:panelGrouprendered属性。

我该如何解决这个问题?

可以是span问题中的div。尝试在你的h:panelGroup中添加layout="block",使其呈现为div。

h:panelGroup放在</script>之后

下面是代码

<h:panelGroup rendered="#{myBean.showDialogBox}"> //Boolean value from bean decides
//if Jquery Dialog box has to be shown or not for this User.

<script type="text/javascript">
/* <![CDATA[ */

   var $h=jQuery.noConflict();          
   function myFunction() 
   {
        $h(document).ready(function() {
            $h("#someDivID").dialog({
                // Dialog box attributes go here
        });
   }
   myFunction();  // Call myFunction to render Jquery Dialog box
/* ]]> */
</script>
</h:panelGroup> // This is what was required
<div id="someDivID"> //Below JSF component gets displayed inside Jquery Dialog box
    <h:commandLink value="Click Here" action="#{myBean.someMethod}"></h:commandLink>
</div>

但是,如果有人能解释一下,我会很感激的。

最新更新