簡體   English   中英

如何將 JSON 綁定到 Struts 2 中的 bean

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM