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");
}