Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未在a中解析的JSF组件<;脚本>;块_Javascript_Jsf_Facelets - Fatal编程技术网

Javascript 未在a中解析的JSF组件<;脚本>;块

Javascript 未在a中解析的JSF组件<;脚本>;块,javascript,jsf,facelets,Javascript,Jsf,Facelets,我不得不改变一个,并尝试在脚本中评估JSF组件。对EL进行了评估,但标签本身未被触及 这种行为的原因是什么 例如: <script type="text/javascript"> //<![CDATA[ function doSomething() { $('.userNode').droppable({ activeClass : 'ui-state-active',

我不得不改变一个
,并尝试在脚本中评估JSF组件。对EL进行了评估,但标签本身未被触及

这种行为的原因是什么

例如:

<script type="text/javascript">
    //<![CDATA[
        function doSomething() {
            $('.userNode').droppable({
                activeClass : 'ui-state-active',
                hoverClass : 'ui-state-highlight',
                tolerance : 'intersect',
                drop : function(event, ui) {
                   <h:panelGroup rendered="#{myBean.useThis}">
                     alert("code A");
                   </h:panelGroup>
                   <h:panelGroup rendered="#{!myBean.useThis}">
                     alert("code B");
                   </h:panelGroup>
        }
            });
        };
    //]]>   </script>

//
警报(“代码A”);
警报(“代码B”);
}
});
};
//]]>   
EL
{!myBean.useThis}
的计算结果为真/假,但渲染结果中包含


为什么?

这是因为您将其放置在CDATA块中。CDATA块中的任何内容都被视为字符数据,而不是XML数据

最好不要这样做。这是一种糟糕的做法。将JS函数放在它自己的
.JS
文件中。使用JSF/EL只准备JS函数将请求的JavaScript变量(作为方法参数)或自己访问的JavaScript变量(在窗口范围内),而不是填充JS函数的部分

例如

为了防止全局范围的污染,请考虑创建命名空间。

<h:outputScript>var my = my||{}; my.useThis = #{myBean.useThis};</h:outputScript>
另见:

我们完全更改了部件,现在它可以在没有JS的情况下工作。你的设计意见是对的。对我来说,这是罕见的,标签没有评估,我想知道原因。塔克斯。
function doSomething() {
    $('.userNode').droppable({
        activeClass : 'ui-state-active',
        hoverClass : 'ui-state-highlight',
        tolerance : 'intersect',
        drop : function(event, ui) {
           if (useThis) {
               alert("code A");
           }
           else {
               alert("code B");
           }
        }
    });
}
<h:outputScript>var my = my||{}; my.useThis = #{myBean.useThis};</h:outputScript>
           if (my.useThis) {
               alert("code A");
           }
           else {
               alert("code B");
           }