2013-05-22 92 views
0

所以我有一個視圖來創建餅圖。經常性代碼看起來像這樣。JSF 2沒有找到我的方法

function drawChart() { 
      var dataBest = new google.visualization.DataTable(); 
       dataBest.addColumn('string', 'Name'); 
       dataBest.addColumn('number', 'Number'); 
       dataBest.addRows([ 
       <ui:repeat value="#{dashboardController.bestSelling()}" var="sale"> 
        [ '#{sale[0].prodId.prodName}', #{sale[1]}], 
       </ui:repeat > 
       ]); 
       var options = {'title':'Best Sold Products', 'width':400,'height':300}; 
       var chart = new google.visualization.PieChart(document.getElementById('test')); 
       chart.draw(dataBest, options); 
     } 

而且在我的控制器稱爲DashboardController我:

public String bestSelling() { 
     List<Sales> bestSelling = saleService.getBestSellingProduct(country,gender,status,income); 
     return new Gson().toJson(bestSelling); 
    } 

但是,當我去我的網頁上,我有以下錯誤:
/faces/all.xhtml @ 22,83 value =「#{dashboardController.bestSelling}」:類com。 .managedbean.DashboardController'沒有'bestSelling'屬性。

我不明白我在那裏做錯了什麼。

+0

咦?你爲什麼試圖迭代一個'String'? – BalusC

+0

嗯,我被告知我需要在json中傳遞我的列表才能使用它,所以我只是遍歷了我的json的所有元素。但現在,我甚至無法讓我的字符串來... ... – Simon

+0

你沒有返回Java'List'。你正在返回一個Java'String'(代表一個JSON格式的數組)。你應該打印它簡單的香草(並且從不在getter方法中執行業務邏輯)。 – BalusC

回答

0

您沒有運行您認爲正在運行的代碼。看看錯誤消息:

/faces/all.xhtml @22,83 value="#{dashboardController.bestSelling}

它提到的方法不使用括號。所以,你顯然在稍後添加它,但webapp項目沒有正確保存/清理/重建/重新部署/重新啓動。


無關的具體問題,有更多的錯誤使用這種方法(嘗試使用<ui:repeat>到Java String遍歷#1思維的錯誤),但你一旦遇到此爲你修復當前的問題。提示:JSF是一個HTML代碼生成器,JS是該HTML的一部分。

+0

我試圖清理/構建我的項目並重新運行它,但它沒有改變任何事情。 – Simon