2017-07-25 117 views
0

它不應該是如此困難的障礙,但我不知道如何克服這一點。我想使用ArrayObject和ObjectObject對象在服務器上生成JSON結構,並將其用作服務器端數據源(工作)和客戶端。如何將數據輕鬆地從服務器傳輸到客戶端?XPages:生成JSON服務器端,使用客戶端

我試着在ScriptBlock中使用toJson,但它失敗(由於Java錯誤,如果我沒有記錯的話使用FBSUndefined)。我也嘗試在jsonRpcService控件中使用toJson,並使用相同的錯誤。我會嘗試找到一些其他方式來將我擁有的對象串起來,但這就是它。我可以做一個Ajax調用,但這將是最後的解決方案。

您是否有其他更好的方法將服務器對象傳輸到瀏覽器?

謝謝!

+1

獲取FBSUndefined錯誤表明要創建JSON的對象明確包含「未定義」值。例如,如果您將某個對象的屬性設置爲等於另一個不包含此屬性的對象的屬性,則可能會發生這種情況。海事組織你的數據是問題,而不是你想創建JSON的方式。您應該首先檢查生成該對象的代碼。如果你找不到導致問題的部分,你可以編寫一個幫助函數來迭代地遍歷該對象並搜索未定義的值... –

+0

Ah ...糟糕...我刪除了大部分JSON生成代碼,只留下一個小例子,現在它似乎工作......:$ –

+0

解決了......如果您將您的評論提升爲答案,我可以關閉該問題。 –

回答

1

獲得一個FBSUndefined錯誤指示對象要創建JSON的明確地包含「未定義」值。例如,如果您將某個對象的屬性設置爲等於另一個不包含此屬性的對象的屬性,則可能會發生這種情況。

IMO你的數據是問題,而不是你想要創建JSON的方式。您應該首先檢查生成該對象的代碼。如果找不到導致問題的部分,則可以編寫一個輔助函數來迭代地遍歷該對象並搜索未定義的值。

3

最簡單的方法是將代碼封裝到服務bean中並使用自定義Rest服務(這是ExtLib中的控件)。我寫在臺階上的一篇文章:

https://www.wissel.net/blog/2014/10/custom-rest-service-in-xpages-using-a-service-bean.html

如果你只使用SSJS ......這種方法仍然有效。您可以使用SSJS對控件內的響應進行編碼。

+0

我確實使用了一種自定義的Rest服務來實現其他功能,但是在這裏我想讓它變得非常簡單,即只是JsonRpc的東西。最後它起作用。 –

3

從Java,我會建議使用com.ibm.commons.util.io.json.JsonJavaArraycom.ibm.commons.util.io.json.JsonJavaObject。它們像Maps/Lists一樣工作,可以包含這些接口(所以我通過.put(myKey, myArrayList)將ArrayList添加到JsonJavaObject中)。例如,要輸出爲JSON作爲輸出腳本塊,請撥打JsonJavaObject.toString()JsonJavaArray.toString()。這是我將在即將發佈的圖表博客文章中展示的解決方案。

+0

有趣!我會讀你的博客。 –