在以下情況下需要一些幫助:liferay,jsf。如何JavaScript json對象保存到數據庫
我已經設置了一個應用程序作爲Liferay portlet,我使用JSF/Primefaces來創建我的視圖。對於數據建模,我使用Hibernate。
在某個視圖中,我加載了一個所謂的「圖像註釋器」,它使用Javascript工具來收集用戶輸入(圖像畫布上的註釋)。這些信息我希望能夠保存在文件/數據庫中,然後在用戶再次編輯特定圖像時重新使用。
這是我的觀點:
<h:head>
<script src="#{facesContext.externalContext.requestContextPath}/js/OpenLayers.js" />
<script src="#{facesContext.externalContext.requestContextPath}/js/image-viewer.js" />
<script src="#{facesContext.externalContext.requestContextPath}/js/xml2js/xml2json.js" />
<script src="#{facesContext.externalContext.requestContextPath}/js/xml2js/xml2json.min.js" />
...
</head>
...
<p:fieldset legend="Viewer">
<p:outputPanel layout="block" styleClass="imageEditorImagePanel" />
</p:fieldset>
....
所以圖像和相關的JScript工具(的OpenLayers)在imageEditorPanel佔位符被加載。
的JavaScript代碼(圖像viewer.js)聚集在一個JSON(以GeoJSON)對象的用戶輸入,並且該對象我想傳遞給背面豆控制器當選擇保存按鈕(JScript中):
...
//define save button
var save = new OpenLayers.Control.Button({
title: 'Save', text: 'Save',
trigger: function(){
var GEOJSON_PARSER = new OpenLayers.Format.GeoJSON();
var vectorLayerAsJson = GEOJSON_PARSER.write(vlayer.features);
...
所以我想 'vectorLayerAsJson' 對象傳遞給Java控制器(backbean)...
我想實現一個Ajax調用,比如:
jQuery.ajax({
type: 'POST',
url: 'imageannotations',
contentType: 'application/json',
data: vectorLayerAsJson,
success : function(data) { alert("success")}
});
可以在大家幫助我怎麼做這個ajax請求,以及我將如何實現我的控制器類?
我不認爲這正是我想要的,因爲一切都是通過JavaScript構建的。其實我有隻是一個佔位符「imageEditorImagePanel」它加載的成像工具。該成像工具具有多個生成json對象的圖像處理子工具。所以我想直接從我的JavaScript代碼傳遞json對象到託管bean。 – thanili
那麼,你會怎麼做/你打算如何接收服務器端的json數據?只需通過getter/setter將其設置爲String,然後從那裏開始反序列化就是我們在前項目中做的。 –
就像那樣。由於這是我第一次實現這樣的功能,我試圖實現的第一件事就是將我的JSON對象發佈到java bean。然後,我要麼在那裏操縱它,要麼在發送之前對其進行後處理。但在這個階段,我的興趣點就是做一個合適的ajax通話,並通過我的後背豆接收它!希望它很清楚。 – thanili