当在函数中定义var时,jsp页面中的Javascript输出'true'

时间:2011-03-09 16:17:48

标签: javascript jsf

我有一个使用javascript的网页。代码示例:

<script type="text/javascript">
var shown = 0;

function showOrHidePanel()
{
    var isComplete = '<h:outputText value="#{general.sessionCompleted}" />';

    if (isComplete == true){
        if (shown==0) {
            Richfaces.showModalPanel('pnl',{width:550, top:200});
        }
        shown = 1;
    } else {
        if (shown == 1) {
            Richfaces.hideModalPanel('pnl');
        }
        shown = 0;
    }
    return;
}
</script>

<a4j:region>
    <h:form>
        <a4j:poll id="poll" interval="10000" reRender="pnl" action="#{general.checkOnDrcSession}"
            oncomplete="showOrHidePanel()" />
    </h:form>
</a4j:region>

我想要实现的效果是,只要sessionCompleted变为真,轮询组件就会显示模态面板(因此它不会在每次重新显示模态面板时显示闪烁的页面效果。 但我是一个javascript newb,我担心,除了这不能正常工作之外,我还会在页面顶部找到一个“真实”的文字。

当我取消var isComplete = '<h:output...声明时,'true'文本消失。

感谢您的帮助...

2 个答案:

答案 0 :(得分:0)

尝试将isComplete更改为:

var isComplete = Boolean("#{general.sessionCompleted}");

这应该(理论上)根据服务器呈现的文本创建一个布尔值。

答案 1 :(得分:0)

摆脱那些单引号。

var isComplete = <h:outputText value="#{general.sessionCompleted}" />;

你最终想要

var isComplete = true; // or false

而不是

var isComplete = 'true'; // or 'false'

在生成的输出中。

或者,你也可以这样做

if (<h:outputText value="#{general.sessionCompleted}" />) {