0

JavaScriptライブラリ「Highcharts2.3.5」(jQueryに基づく)をJava Server Faces 2.0(Apache MyFaces)で使用しようとしています。

Highchartsの例から基本的な例を試してみたいだけです。例を次に示します。

<!DOCTYPE HTML>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        <title>Highcharts Example</title>

        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">
$(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'line',
                marginRight: 130,
                marginBottom: 25
            },
            title: {
                text: 'Monthly Average Temperature',
                x: -20 //center
            },
            subtitle: {
                text: 'Source: WorldClimate.com',
                x: -20
            },
            xAxis: {
                categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
                    'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
            },
            yAxis: {
                title: {
                    text: 'Temperature (°C)'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function() {
                        return '<b>'+ this.series.name +'</b><br/>'+
                        this.x +': '+ this.y +'°C';
                }
            },
            legend: {
                layout: 'vertical',
                align: 'right',
                verticalAlign: 'top',
                x: -10,
                y: 100,
                borderWidth: 0
            },
            series: [{
                name: 'Tokyo',
                data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
            }, {
                name: 'New York',
                data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
            }, {
                name: 'Berlin',
                data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
            }, {
                name: 'London',
                data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
            }]
        });
    });

});
        </script>
    </head>
    <body>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="min-width: 400px; height: 400px; margin: 0 auto"></div>

    </body>
</html>

そこで、facestemplateを作成しました。

<!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:ui="http://java.sun.com/jsf/facelets" xmlns:h="http://java.sun.com/jsf/html">
<h:head>
<title><ui:insert name="title">Default title</ui:insert></title>
<ui:insert name="head">
</ui:insert>
</h:head>
<h:body>
    <div id="content">
        <ui:insert name="content">
        </ui:insert>
    </div>
</h:body>
</html>

Highchartコードに使用するもの:

<!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:ui="http://java.sun.com/jsf/facelets"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core">


<ui:composition template="/mytemplate.xhtml">
    <ui:define name="head">
        <script type="text/javascript"
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(function() {
                var chart;
                $(document)
                        .ready(
                                function() {
                                    chart = new Highcharts.Chart(
                                            {
                                                chart : {
                                                    renderTo : 'container',
                                                    type : 'line',
                                                    marginRight : 130,
                                                    marginBottom : 25
                                                },
                                                title : {
                                                    text : 'Monthly Average Temperature',
                                                    x : -20
                                                //center
                                                },
                                                subtitle : {
                                                    text : 'Source: WorldClimate.com',
                                                    x : -20
                                                },
                                                xAxis : {
                                                    categories : [ 'Jan',
                                                            'Feb', 'Mar',
                                                            'Apr', 'May',
                                                            'Jun', 'Jul',
                                                            'Aug', 'Sep',
                                                            'Oct', 'Nov', 'Dec' ]
                                                },
                                                yAxis : {
                                                    title : {
                                                        text : 'Temperature (°C)'
                                                    },
                                                    plotLines : [ {
                                                        value : 0,
                                                        width : 1,
                                                        color : '#808080'
                                                    } ]
                                                },
                                                tooltip : {
                                                    formatter : function() {
                                                        return '<b>'
                                                                + this.series.name
                                                                + '</b><br/>t_$ta_$tag'
                                                                + this.x + ': '
                                                                + this.y + '°C';
                                                    }
                                                },
                                                legend : {
                                                    layout : 'vertical',
                                                    align : 'right',
                                                    verticalAlign : 'top',
                                                    x : -10,
                                                    y : 100,
                                                    borderWidth : 0
                                                },
                                                series : [
                                                        {
                                                            name : 'Tokyo',
                                                            data : [ 7.0, 6.9,
                                                                    9.5, 14.5,
                                                                    18.2, 21.5,
                                                                    25.2, 26.5,
                                                                    23.3, 18.3,
                                                                    13.9, 9.6 ]
                                                        },
                                                        {
                                                            name : 'New York',
                                                            data : [ -0.2, 0.8,
                                                                    5.7, 11.3,
                                                                    17.0, 22.0,
                                                                    24.8, 24.1,
                                                                    20.1, 14.1,
                                                                    8.6, 2.5 ]
                                                        },
                                                        {
                                                            name : 'Berlin',
                                                            data : [ -0.9, 0.6,
                                                                    3.5, 8.4,
                                                                    13.5, 17.0,
                                                                    18.6, 17.9,
                                                                    14.3, 9.0,
                                                                    3.9, 1.0 ]
                                                        },
                                                        {
                                                            name : 'London',
                                                            data : [ 3.9, 4.2,
                                                                    5.7, 8.5,
                                                                    11.9, 15.2,
                                                                    17.0, 16.6,
                                                                    14.2, 10.3,
                                                                    6.6, 4.8 ]
                                                        } ]
                                            });
                                }); });
        </script>
    </ui:define>

    <ui:define name="content">
        <script src="http://code.highcharts.com/highcharts.js"></script>
        <script src="http://code.highcharts.com/modules/exporting.js"></script>

        <div id="container"
            style="min-width: 400px; height: 400px; margin: 0 auto"></div>


    </ui:define>
</ui:composition>
</html>

しかし、私の顔の実装では図を見ることができません。私の問題は何ですか?JSFでjavascript/jQuery / highchartsを使用するためのより良い方法または一般的な方法はありますか?

編集:私のコードを修正しました。確かに、Javascriptコードがロードされています。

しかし、firebugを使用してコードを検査すると、「highchart」関数が2回生成されます。なぜこれが起こったのですか?

4

3 に答える 3

3

無名関数を閉じていません。head 内の終了タグ});の直前に追加します。</script>

以下のコード スニペットを参照してください。

<ui:composition template="/mytemplate.xhtml">
<ui:define name="head">
    <script type="text/javascript"
        src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function() {
            var chart;
            $(document)
                    .ready(
                            function() {
                                chart = new Highcharts.Chart(
<!-- CODE CONTINUES -->

                           } ]
                                        }); // END new Highcharts.Chart()
                            }); // END $(document).ready()

         }); // THIS WAS MISSING!!
    </script>
</ui:define> 
于 2013-02-02T22:20:29.673 に答える
1

すべてのコードを js ファイルに配置し、ブラウザー コンソールでエラーを確認するよりもxhtmlに含めます。コードを jslint することもできます...

于 2013-02-04T19:11:42.893 に答える
0

次の行をハイチャート コードの最初の行に追加します...

 jQuery.noConflict();

例えば:-

$(function () {
    var chart;
    jQuery.noConflict(); //add this
 $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                type: 'line',
                marginRight: 130,
                marginBottom: 25
            }, ..........
于 2013-10-08T06:37:25.367 に答える