1

JSFでjqPlotを使用する際に問題があります

このコードを JSF ページに追加しました。

$(document).ready(function () {
  var s1 = [200, 600, 700, 1000];
  var s2 = [460, - 210, 690, 820];
  var s3 = [-260, - 440, 320, 200];
  var ticks = ['May', 'June', 'July', 'August'];
  var plot1 = $.jqplot('chart1', [s1, s2, s3], {
    // The "seriesDefaults" option is an options object that will
    // be applied to all series in the chart.
    seriesDefaults: {
      renderer: $.jqplot.BarRenderer,
      rendererOptions: {
        fillToZero: true
      }
    },
    series: [{
      label: 'Hotel'
    }, {
      label: 'Event Regristration'
    }, {
      label: 'Airfare'
    }],
    legend: {
      show: true,
      placement: 'outsideGrid'
    },
    axes: {
      xaxis: {
        renderer: $.jqplot.CategoryAxisRenderer,
        ticks: ticks
      },
      yaxis: {
        pad: 1.05,
        tickOptions: {
          formatString: '$%d'
        }
      }
    }
  });
});

しかし、ページを読み込もうとすると、次のエラーが発生しました。

Uncaught TypeError: Cannot read property 'BarRenderer' of undefined
(anonymous function)portfolioModeling.xhtml:184
f.extend._Deferred.e.resolveWithjquery.min.js:2
e.extend.readyjquery.min.js:2
c.addEventListener.C

必要なjsファイル全体とcssファイルを追加しましたが、道に迷ってどこに問題があるのか​​ わかりません

前もって感謝します

4

4 に答える 4

4

これは、PrimeFaces、RichFaces、ICEfaces など、それ自体がすでにjQuery に同梱されている JSF コンポーネント ライブラリを使用している場合に発生する可能性があります。

その場合、すべての色で JavaScript エラーが発生するだけの別のバージョンの jQuery を含めないでください。

jQuery プラグインとそれに依存するスクリプトがある場合は、 の代わりに の中に<h:outputScript target="head">追加する必要があります。このようにして、JSF コンポーネント ライブラリが jQuery にバンドルされた後にロードされることを保証できます。<h:body><h:head>

<h:head>
    ...
</h:head>
<h:body>
    <h:outputScript name="js/jquery.jqplot.js" target="head" />
    <h:outputScript name="js/onload.js" target="head" />
    ...
</h:body>

ただし、jQuery にバンドルされた JSF コンポーネント ライブラリは、明示的に jQuery を必要とするコンポーネントがビューに含まれている場合にのみ自動インクルードされます。ビューにそれが含まれていない場合、jQuery は自動的に組み込まれず、プラグインとスクリプトが壊れる可能性があります。すべてのビューに jQuery を強制的に含める必要がある場合は<h:outputScript>、 で明示的に宣言する必要があります<h:head>

どのコンポーネント ライブラリを使用しているかは不明ですが、PrimeFaces の場合は

<h:head>
    ...
    <h:outputScript library="primefaces" name="jquery/jquery.js" />
    <h:outputScript name="js/jquery.jqplot.js" />
    <h:outputScript name="js/onload.js" />
</h:head>
<h:body>
    ...
</h:body>

(しかし、PrimeFaces はすでに内部で jqPlot を使用するいくつかの JSF コンポーネントを提供しているため、jqPlot を手動でいじるのは奇妙です)

RichFaces 4.x の場合は

<h:head>
    ...
    <h:outputScript name="jquery.js" />
    <h:outputScript name="js/jquery.jqplot.js" />
    <h:outputScript name="js/onload.js" />
</h:head>
<h:body>
    ...
</h:body>
于 2012-10-17T10:59:07.947 に答える
0

私は問題を解決しました

問題は、スタイルシートとjsファイルを頭に含めたため、jsfmvcプロジェクトに大きな問題が発生したことです。

于 2012-10-17T10:03:22.867 に答える
0

私がフォローしていたチュートリアルに含まれていなかったいくつかの基本的なスクリプト参照を含めることで同じエラーを解決したので、ここに投稿するだけです。

HTML のヘッダー セクションで欠落している行は次のとおりです (ライブラリの場所 './lib...' は、ローカル インストール パスによって異なることに注意してください)。

<script language="javascript" type="text/javascript" src="./lib/dist/jquery.jqplot.min.js"></script>
<link rel="stylesheet" type="text/css" href="./lib/dist/jquery.jqplot.css">

これが誰かを助けることを願って、

ジェームズ

于 2013-09-26T13:52:28.257 に答える
-1

JQueryファイルの問題、jquery.jsを呼び出す必要があります

于 2014-03-20T08:43:51.167 に答える