Javascript 如果Java脚本放在h:panelGroup中,则不会调用h:commandLink

Javascript 如果Java脚本放在h:panelGroup中,则不会调用h:commandLink,javascript,jquery,jsf,jsf-1.2,Javascript,Jquery,Jsf,Jsf 1.2,下面是代码 <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();

下面是代码

<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 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>
//来自bean的布尔值
//是否必须为此用户显示Jquery对话框。
/*  */
//下面JSF组件显示在Jquery对话框中
问题: 如果我删除
h:panelGroup
,我的
h:commandLink
工作正常(调用bean方法)。但是,我无法删除
h:panelGroup
,因为此对话框必须根据预定义的条件仅向少数用户显示。 我想使用
h:panelGroup
rendered
属性


如何修复此问题?

它可能是span问题中的一个div。尝试在h:panelGroup中添加layout=“block”,使其呈现为一个div。

通过将
h:panelGroup
放在
之后解决了此问题

下面是代码

<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 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>
//来自bean的布尔值
//是否必须为此用户显示Jquery对话框。
/*  */
//这是需要的
//下面JSF组件显示在Jquery对话框中

但是,如果有人能解释一下,我将不胜感激。

您是否绝对肯定您正在运行JSF1.2而不是1.1或1.0?由于JSF 1.2,在这个构造中,
是完全不必要的。如果你的
没有被呈现,那么它的任何内容都不会被呈现,这意味着它里面的HTML/CSS/JS都不会被放置在生成的HTML上。最好是将所有JS/CSS代码移到它之外。@BalusC Am使用JSF 1.2。我不明白
是不必要的。我现在已经把它去掉了。我在删除的地方编辑了我的问题和答案