2012-03-05 21 views
1

我試圖按照@BalusC的建議here。 (我正在寫這裏,因爲它與前面的問題無關)。如何在Javascript和JSF中使用數據庫?

因此,我需要從我的數據庫中獲取數據,並使用JavaScript在圖表中顯示,this is an example。 我只是做這個示例,所以我可以理解如何顯示從服務器端到客戶端的一些數據。

我的豆:

@ManagedBean(name="reportc") 
@ViewScoped 
public class ReportControl implements Serializable { 
    private static final long serialVersionUID = 3269125738504434502L; 

    private String[] dataAsJson = {"1.3", "2.1", "1.3", "2.2", "1.4", "2.7", "1.5", "2.1", "1.6", "2.4", "1.9", "2.1"}; 

    public String getDataAsJson() { 
     Gson gson = new Gson(); 
     return gson.toJson(dataAsJson); 
    } 
} 

幫助理解spline-plot-bands.js文件。

<!DOCTYPE html> 
<html lang="en" 
    xmlns="http://www.w3.org/1999/xhtml" 
    ... 

    <h:head> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

     <h:outputScript>var data = ${reportc.dataAsJson};</h:outputScript> 
     <h:outputScript name="javascript/highchart/spline-plot-bands.js" /> 
    </h:head> 
    <h:body> 

    <h:outputScript name="javascript/highchart/highcharts.js" /> 
    <h:outputScript name="javascript/highchart/modules/exporting.js" /> 

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

    </h:body> 
</html> 

正如您在spline-plot-bands.js文件中看到的那樣。

所有這一切對我來說重要的是這一部分(我猜):

series: [{ 
    name: 'Hestavollane', 
    data: [4.3, 5.1, 4.3, 5.2, 5.4, 4.7, 3.5, 4.1, 5.6, 7.4, 6.9, 7.1, 
     7.9, 7.9, 7.5, 6.7, 7.7, 7.7, 7.4, 7.0, 7.1, 5.8, 5.9, 7.4, 
     8.2, 8.5, 9.4, 8.1, 10.9, 10.4, 10.9, 12.4, 12.1, 9.5, 7.5, 
     7.1, 7.5, 8.1, 6.8, 3.4, 2.1, 1.9, 2.8, 2.9, 1.3, 4.4, 4.2, 
     3.0, 3.0] 

    }, { 
    name: 'Voll', 
    data: [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.3, 0.0, 
     0.0, 0.4, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
     0.0, 0.6, 1.2, 1.7, 0.7, 2.9, 4.1, 2.6, 3.7, 3.9, 1.7, 2.3, 
     3.0, 3.3, 4.8, 5.0, 4.8, 5.0, 3.2, 2.0, 0.9, 0.4, 0.3, 0.5, 0.4] 
    }] 

如何我可以把這樣的事情從我的服務器端這個JavaScript?

我想我已經接近了解如何使用gson,javascript與jsf,但我仍然不知道如何完成此操作。 有人可以幫助我嗎?

回答

1

的JS需要一個double[],但你喂String[]。因此解決這個問題:

private double[] hestavollane = { 
    4.3, 5.1, 4.3, 5.2, 5.4, 4.7, 3.5, 4.1, 5.6, 7.4, 6.9, 7.1, 
    7.9, 7.9, 7.5, 6.7, 7.7, 7.7, 7.4, 7.0, 7.1, 5.8, 5.9, 7.4, 
    8.2, 8.5, 9.4, 8.1, 10.9, 10.4, 10.9, 12.4, 12.1, 9.5, 7.5, 
    7.1, 7.5, 8.1, 6.8, 3.4, 2.1, 1.9, 2.8, 2.9, 1.3, 4.4, 4.2, 
    3.0, 3.0 
}; 

private double[] voll = { 
    0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.1, 0.0, 0.3, 0.0, 
    0.0, 0.4, 0.0, 0.1, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 
    0.0, 0.6, 1.2, 1.7, 0.7, 2.9, 4.1, 2.6, 3.7, 3.9, 1.7, 2.3, 
    3.0, 3.3, 4.8, 5.0, 4.8, 5.0, 3.2, 2.0, 0.9, 0.4, 0.3, 0.5, 0.4 
}; 

public String getDataAsJson() { 
    Map<String, Object> data = new HashMap<String, Object>(); 
    data.put("hestavollane", hestavollane); 
    data.put("voll", voll); 
    return new Gson().toJson(data); 
} 

和編輯您spline-plot-bands.js文件,用它代替硬編碼值:

series: [{ 
    name: 'Hestavollane', 
    data: data.hestavollane 
}, { 
    name: 'Voll', 
    data: data.voll 
}] 
+0

WOW! 真棒Bauke,謝謝你的支持我的朋友。 它的工作原理! 謝謝。 – 2012-03-07 18:48:39

+0

不客氣。 – BalusC 2012-03-07 19:16:27

1

,你需要鏈接的文章的關鍵部分是這樣的:

<h:outputScript>var data = ${reportc.dataAsJson};</h:outputScript> 
相關問題