2016-11-22 58 views
0

我是JSF的新手,我想在我的jsf頁面中添加一個高圖表,但我暗示了演示代碼,當我運行它時,它會拋出我這個.. 。如何在JSF中實現量表實體圖表

Error Parsing /index.xhtml: Error Traced[line: 185] El nombre de la entidad debe aparecer inmediatamente después de '&' en la referencia de entidades. 
javax.faces.view.facelets.FaceletException: Error Parsing /index.xhtml: Error Traced[line: 185] El nombre de la entidad debe aparecer inmediatamente después de '&' en la referencia de entidades. 

這是該指數

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 
     <script src="https://code.highcharts.com/highcharts.js"></script> 
     <script src="https://code.highcharts.com/highcharts-more.js"></script> 

     <script src="https://code.highcharts.com/modules/solid-gauge.js"></script> 

     <div style="width: 600px; height: 400px; margin: 0 auto"> 
      <div id="container-speed" style="width: 300px; height: 200px; float: left"></div> 
      <div id="container-rpm" style="width: 300px; height: 200px; float: left"></div> 
     </div> 
     <script type="text/javascript"> 
      $(function() { 

       var gaugeOptions = { 

        chart: { 
         type: 'solidgauge' 
        }, 

        title: null, 

        pane: { 
         center: ['50%', '85%'], 
         size: '140%', 
         startAngle: -90, 
         endAngle: 90, 
         background: { 
          backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || '#EEE', 
          innerRadius: '60%', 
          outerRadius: '100%', 
          shape: 'arc' 
         } 
        }, 

        tooltip: { 
         enabled: false 
        }, 

        // the value axis 
        yAxis: { 
         stops: [ 
          [0.1, '#55BF3B'], // green 
          [0.5, '#DDDF0D'], // yellow 
          [0.9, '#DF5353'] // red 
         ], 
         lineWidth: 0, 
         minorTickInterval: null, 
         tickAmount: 2, 
         title: { 
          y: -70 
         }, 
         labels: { 
          y: 16 
         } 
        }, 

        plotOptions: { 
         solidgauge: { 
          dataLabels: { 
           y: 5, 
           borderWidth: 0, 
           useHTML: true 
          } 
         } 
        } 
       }; 

       // The speed gauge 
       var chartSpeed = Highcharts.chart('container-speed', Highcharts.merge(gaugeOptions, { 
        yAxis: { 
         min: 0, 
         max: 200, 
         title: { 
          text: 'Speed' 
         } 
        }, 

        credits: { 
         enabled: false 
        }, 

        series: [{ 
         name: 'Speed', 
         data: [80], 
         dataLabels: { 
          format: '<div style="text-align:center"><span style="font-size:25px;color:' + 
           ((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y}</span><br/>' + 
            '<span style="font-size:12px;color:silver">km/h</span></div>' 
         }, 
         tooltip: { 
          valueSuffix: ' km/h' 
         } 
        }] 

       })); 

       // The RPM gauge 
       var chartRpm = Highcharts.chart('container-rpm', Highcharts.merge(gaugeOptions, { 
        yAxis: { 
         min: 0, 
         max: 5, 
         title: { 
          text: 'RPM' 
         } 
        }, 

        series: [{ 
         name: 'RPM', 
         data: [1], 
         dataLabels: { 
          format: '<div style="text-align:center"><span style="font-size:25px;color:' + 
           ((Highcharts.theme && Highcharts.theme.contrastTextColor) || 'black') + '">{y:.1f}</span><br/>' + 
            '<span style="font-size:12px;color:silver">* 1000/min</span></div>' 
         }, 
         tooltip: { 
          valueSuffix: ' revolutions/min' 
         } 
        }] 

       })); 

       // Bring life to the dials 
       setInterval(function() { 
        // Speed 
        var point, 
         newVal, 
         inc; 

        if (chartSpeed) { 
         point = chartSpeed.series[0].points[0]; 
         inc = Math.round((Math.random() - 0.5) * 100); 
         newVal = point.y + inc; 

         if (newVal < 0 || newVal > 200) { 
          newVal = point.y - inc; 
         } 

         point.update(newVal); 
        } 

        // RPM 
        if (chartRpm) { 
         point = chartRpm.series[0].points[0]; 
         inc = Math.random() - 0.5; 
         newVal = point.y + inc; 

         if (newVal < 0 || newVal > 5) { 
          newVal = point.y - inc; 
         } 

         point.update(newVal); 
        } 
       }, 2000); 


      }); 
     </script> 
    </h:body> 
</html> 

我不知道我在做什麼錯誤的代碼,希望有人能幫助我使用的Facelets

+0

發表在谷歌你的錯誤:https://www.google.nl/search?q=El+nombre+de+la+entidad + debe + aparecer + inmediatamente + despu%C3%A9s + de +%27%26%27 + en + la + referencia + de + entidades,並看看它給出的行號(發佈英文錯誤會給你更多的結果。我爲此總是建議運行英文jdk) – Kukeltje

+2

[爲什麼&符號(&)需要在JSF中編碼?有沒有辦法解決這個問題?](http://stackoverflow.com/questions/11086709/why-do-ampersands-need-to-be-encoded-in-jsf-is-there-a-way-around-this ) – Kukeltje

回答

0

JSF是基於XML所以在Java和大多數編程語言中,(&)將被視爲實體而不是conditional operator。所以如果你想用你的facelets你必須改變所有&與&amp;這是&符實體。

+1

正如可以在重複中找到:http://stackoverflow.com/questions/11086709/why-do-ampersands-need-to-be-encoded-in-jsf-is-there-a-way-around-這在StackOverflow中是一個很好的練習來搜索這些並標記問題。保持這樣'乾淨' – Kukeltje

0

此問題是由於未使用CData引起的。您應該使用CDATA這個

//<![CDATA[ 
    //javascript code 
//]]> 

什麼呢意味着CDATA What does <![CDATA[]]> in XML mean?

+1

正如可以在重複中找到:http://stackoverflow.com/questions/11086709/why-do-ampersands-need-to-be-encoded-in-jsf-is-therea-a-方式圍繞頭這一點。在StackOverflow中搜索並標記問題是一種很好的做法。保持這樣'乾淨' – Kukeltje

+0

你是對的,這解決了那個錯誤問題,現在我不知道爲什麼它不會在屏幕上顯示任何東西,你認爲我錯過了什麼? – Oscnicvaz