[英]How to bind JSON to Java object in Struts2 using struts2-json-plugin
[英]How to bind JSON to a bean in Struts 2
好吧,我想對 Struts 2 操作進行 Ajax 調用,因此我想將帶有Employee
bean 特定 id 的 JSON 從客戶端發送到服務器。
問題是應該如何構造它以便在操作中將id
設置為 bean。
我認為它應該是這樣的:
var employee = {Employee:{id:"someId"}}
可以嗎?
這是我正在使用的 jQuery 函數
$('#select').change(function(){
var id = $(this).val();
var employee = {employee:{id:"someid"}};
$.getJSON('ajax/getPhoto.action', employee , function(data){
console.log(data);
});
});
實際上,在調試之后,我可以看到在調用服務時, Action
中的Employee
bean 為空。
發送我的 json 對象,它沒有直接作為數據寫入:EmployeejsonObjects。 因為它期望傳遞給它的 JSON 對象寫為鍵值對。 所以我們把員工作為關鍵。 由於我們將 json 對象存儲在一個變量中,我們需要使用 stringify() 擴展 json 對象列表,否則它將作為 java 腳本對象發送。
$.getJSON('ajax/getPhoto.action', {employee: JSON.stringify(employee) } , function(data){
console.log(data);
});
如果Employee
bean 被實例化並初始化了 action bean,則它不能為null
。 通過這種方式,操作 bean 應該為Employee
提供 getter,並為id
屬性提供一個 setter。
確保params
攔截器包含在動作配置中,並且您的動作類不是ModelDriven
。
jQuery 轉換一個 JavaScript 對象,如
發送到服務器的數據作為查詢字符串附加到 URL。 如果 data 參數的值是一個普通對象,則在附加到 URL 之前將其轉換為字符串並進行 url 編碼。
然后你應該檢查哪些參數被傳遞給了動作。 如果您的操作類實現了ParameterAware
或從ActionContext
獲取參數,則可以執行此操作
Map parameters = ActionContext.getContext().getParameters();
在這里,您可以自己填充參數而不是params
攔截器,因為您可以訪問它們或正確配置攔截器,因此它能夠完成工作。 在調試問題時使用devMode
打開,因為它會打印無法設置的參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.