jsf/icefaces中的javascript

che*_*tan 3 javascript jsf icefaces

我有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;
        }
Run Code Online (Sandbox Code Playgroud)

这工作完美,但当我检查条件是否如果(c>"9"|| c <"0")它将给出错误像

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.
Run Code Online (Sandbox Code Playgroud)

经过长时间的观察,我发现<(小于)符号会产生问题.JSF不支持<签名吗?

Ali*_*Ali 10

将您的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>
Run Code Online (Sandbox Code Playgroud)