jsf/icefaces 中的 javascript

Posted

技术标签:

【中文标题】jsf/icefaces 中的 javascript【英文标题】:javascript in jsf/icefaces 【发布时间】:2011-07-22 17:07:30 【问题描述】:

我有带有 jspx 扩展名的文件,我写 javascript 之类的

function isNumber(inputId)

            var value = document.getElementById('mainForm:'+ inputId).value;
            var  s = value.length;

            while(s >= 0)
                var c = value.charAt(s);
                if(c > "9")
                    alert("Value must be digit");
                    document.getElementById('mainForm:'+ inputId).value = "";
                    document.getElementById('mainForm:'+ inputId).focus();
                    return false;
                
                s --;
            
            return true;
        

效果很好,但是当我检查 if(c > "9" || c 的错误

com.sun.facelets.FaceletException: Error Parsing /WEB-INF/includes/templates/cc-classic-template.jspx: Error Traced[line: 386] The content of elements must consist of well-formed character data or markup.

经过长时间的观察,我发现

【问题讨论】:

【参考方案1】:

除了转义和 CDATA 答案:

如果你想检查一个值是否是一个数字,有一个 javascript 内置函数:isNaN

这是一个例子:

if (isNaN(document.getElementById('mainForm:'+ inputId).value))
  
    alert("Please enter digits");
    document.getElementById(obj).focus();
    document.getElementById(obj).select();
    return false;
  

【讨论】:

【参考方案2】:

正如 Matt Handy 所解释的,您不能在 JSPX 中使用 <> 符号,因为这是一种 XML 格式。对于您的问题,您有三个解决方案:

使用<> 进行转义。 使用 <![CDATA[ ... ]]> 将 JavaScript 代码保存在您的页面中。 将您的 JavaScript 代码设置在单独的 .js 文件中,并将其加载到您的 JSPX 页面中。

【讨论】:

【参考方案3】:

将您的 Javascript 包含在 CDATA 部分中:

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

    function isNumber(inputId)

            var value = document.getElementById('mainForm:'+ inputId).value;
            var  s = value.length;

            while(s >= 0)
                var c = value.charAt(s);
                if(c > "9")
                    alert("Value must be digit");
                    document.getElementById('mainForm:'+ inputId).value = "";
                    document.getElementById('mainForm:'+ inputId).focus();
                    return false;
                
                s --;
            
            return true;
        

        //Code containing "<" also comes in this section

/* ]]> */
</script>

【讨论】:

以上是关于jsf/icefaces 中的 javascript的主要内容,如果未能解决你的问题,请参考以下文章

哪种方法用于将动作回调绑定到 JSF/ICEFaces InputFile?

IllegalStateException:getAttribute:会话已经失效

JavaScrip命名规则

JavaScrip对象

javascrip中部分函数总结

javascripe之继承