【问题标题】:javascript in jsf/icefacesjsf/icefaces 中的 javascript
【发布时间】: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.

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

【问题讨论】:

    标签: javascript jsf icefaces


    【解决方案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>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-04-08
          • 2011-12-19
          • 1970-01-01
          • 2021-01-30
          • 2012-10-13
          • 2013-03-03
          • 2016-07-20
          • 1970-01-01
          相关资源
          最近更新 更多