读书人

高分!如何让FusionChartsFree画出来的

发布时间: 2012-04-05 12:42:40 作者: rapoo

高分求助!!怎么让FusionChartsFree画出来的图显示在表格里
我把代码贴出来麻烦各位高手帮忙看下
1、最终显示页面test.jsp,这个页面是经过精简的,其实有更多代码,但与本问题无关

HTML code
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>My JSP 'test.jsp' starting page</title>        <meta http-equiv="pragma" content="no-cache">    <meta http-equiv="cache-control" content="no-cache">    <meta http-equiv="expires" content="0">        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">    <meta http-equiv="description" content="This is my page">    <!--    <link rel="stylesheet" type="text/css" href="styles.css">    -->  </head>    <body>    <table width="350px" border="0" align="center" cellpadding="0" cellspacing="1" bgcolor="#bdd5e0"  class="ntable">          <tr height="45px">            <td width="38%" align="center" bgcolor="#e6effb"><strong>柱状图</strong></td>          </tr>            <tr height="200px">             <td bgcolor="#FFFFFF" class="tdl">                <jsp:include page="includes/chart.jsp" flush="true">                 <jsp:param name="phone_id" value="127011" />               </jsp:include>            </td>                                   </tr>            </table>    </body></html>


2、test.jsp中include的chart.jsp
HTML code
<%@ page language="java"%><%@ page import="java.sql.*"%> <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><HTML>    <HEAD>        <TITLE>FusionCharts Free - Database And Connection Class Example</TITLE>        <SCRIPT LANGUAGE="Javascript" SRC="../FusionCharts/FusionCharts.js"></SCRIPT>        <style type="text/css">            <!--            body {                font-family: Arial, Helvetica, sans-serif;                font-size: 12px;            }            .text{                font-family: Arial, Helvetica, sans-serif;                font-size: 12px;            }            -->            </style>    </HEAD>    <BODY>        <CENTER>            <%                int pid = Integer.parseInt(request.getParameter("phone_id"));                //int pid=127011;                Class.forName("com.mysql.jdbc.Driver").newInstance();                Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/rv_mining","root","123123");                Statement st1=null;                ResultSet rs1=null;                String strXML="";                String strXML1="";                strXML = "<graph xAxisname='参数列表' yAxisname='用户倾向值' hovercapbg='DEDEBE' hovercapborder='889E6D'"+                " rotateNames='0' yAxisMaxValue='40' numdivlines='5' divLineColor='CCCCCC' divLineAlpha='80'"+                " decimalPrecision='0' showAlternateHGridColor='1' AlternateHGridAlpha='30' AlternateHGridColor='CCCCCC'>";                strXML += "<categories font='Arial' fontSize='11' fontColor='000000'>"+                           "<category name='屏幕'/>  <category name='系统性能' />"+                            "<category name='外观及附件' />  <category name='通话及音效' /> "+                           "<category name='待机' /> <category name='娱乐' />"+                           "<category name='总体评价' /> </categories>";                strXML += "<dataset seriesname='正面评价' color='56B9F9'>";                strXML1 = "<dataset seriesname='负面评价' color='FDC12E'>";                try {                                int P = 0;                    int N = 0;                    st1=con.createStatement();                    rs1 = st1.executeQuery("select * from rvm_chart where phone_id="+pid+"");                    while(rs1.next()){                        P = rs1.getInt("P_value");                        N = rs1.getInt("N_value");                        strXML += " <set value='"+P+"' /> ";                        strXML1 += "<set value='"+N+"' /> ";                    }                    rs1.close();                    st1.close();                    con.close();                }catch(SQLException e) {                    e.printStackTrace();                }                strXML1 += "</dataset>";                strXML += "</dataset>"+strXML1+"</graph>";            %>             <jsp:include page="FusionChartsRenderer.jsp" flush="true">                         <jsp:param name="chartSWF" value="../FusionCharts/FCF_MSColumn2D.swf" />                         <jsp:param name="strURL" value="" />                         <jsp:param name="strXML" value="<%=strXML %>" />                         <jsp:param name="chartId" value="UsersTrend" />                         <jsp:param name="chartWidth" value="300" />                         <jsp:param name="chartHeight" value="210" />                         <jsp:param name="debugMode" value="false" />                             <jsp:param name="registerWithJS" value="false" />                                     </jsp:include>        </CENTER>    </BODY></HTML> 



3、chart.jsp中include的FusionChartsRenderer.jsp,这是FCF教程里自带的一个页面
HTML code
<%    String chartSWF = request.getParameter("chartSWF");    String strURL = request.getParameter("strURL");    String strXML = request.getParameter("strXML");    String chartId = request.getParameter("chartId");    String chartWidthStr = request.getParameter("chartWidth");    String chartHeightStr = request.getParameter("chartHeight");    String debugModeStr= request.getParameter("debugMode");     String registerWithJSStr= request.getParameter("registerWithJS");     int chartWidth = 0;    int chartHeight = 0;    boolean debugMode=false;    boolean registerWithJS=false;    int debugModeInt = 0;    int regWithJSInt = 0;        if (null != chartWidthStr && !chartWidthStr.equals("")) {        chartWidth = Integer.parseInt(chartWidthStr);    }    if (null != chartHeightStr && !chartHeightStr.equals("")) {        chartHeight = Integer.parseInt(chartHeightStr);    }    if(null!=debugModeStr && !debugModeStr.equals("")){        debugMode = new Boolean(debugModeStr);        debugModeInt=boolToNum(debugMode);    }    if(null!=registerWithJSStr && !registerWithJSStr.equals("")){        registerWithJS = new Boolean(registerWithJSStr);        regWithJSInt=boolToNum(registerWithJS);    }        %>            <!-- START Script Block for Chart <%=chartId%> -->            <div id='<%=chartId %>Div'>Chart.</div>            <script type='text/javascript'>            var chart_<%=chartId%> = new FusionCharts("<%=chartSWF %>", "<%=chartId%>", "<%=chartWidth %>", "<%= chartHeight%>", "<%= debugModeInt%>", "<%= regWithJSInt%>");                        <%    // Check whether we've to provide data using dataXML method or dataURL                // method                                  if (strXML.equals("")) {            %>                    <!-- Set the dataURL of the chart-->                    chart_<%= chartId%>.setDataURL("<%= strURL%>");                            <%} else {%>                    // Provide entire XML data using dataXML method                    chart_<%= chartId%>.setDataXML("<%= strXML%>");                <%}%>                <!-- Finally, render the chart.-->                chart_<%=chartId%>.render("<%=chartId%>Div");            </script>            <!--END Script Block for Chart <%=chartId%> --><%!    /**     * Converts a Boolean value to int value<br>     *      * @param bool Boolean value which needs to be converted to int value      * @return int value correspoding to the boolean : 1 for true and 0 for false     */   public int boolToNum(Boolean bool) {    int num = 0;    if (bool.booleanValue()) {        num = 1;    }    return num;    }%>


最终显示的时候总是出不来图,单独运行chart.jsp可以出来柱状图

[解决办法]
你可以 测试一下, 首先给你的这个TD加上边框 你先看你的这个TD画出来没。如果连TD都没画出来可能就加载不了这个jsp了 试着 加一个  再也可能是大小有问题。 既然你说jsp本身单独访问的时候是可以显示出柱状图的话 那第2个页面本身应该是没有问题。
[解决办法]
把FusionChartsRenderer.jsp里的代码整合到chart.jsp里去,然后include一个chart.jsp就行,要注意src外部文件的相对地址别弄错

读书人网 >JavaScript

热点推荐