2012-10-05 11 views
6

Chcę wysłać mój obiekt JSON z Javscript do Action Struts2.JSH Jquery do Struts2 akcja

JSON Próbka Object

{ 
     "lists":["list1","list2","list3","list4","list5"], 
     "maps": { 
      "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1" 
     }, 
     "number1":123456789, 
     "numberarray1":[1,2,3,4,5,6,7,8,9], 
     "string1":"A", 
     "stringarray1":["A1","B1"] 
    } 

Moje Jquery Ajax

$.ajax({ 
    type: 'POST', 
    url: 'json/JSON.action', 
    data: JSON.stringify(data), 
    dataType: 'json', 
    async: false , 
    contentType: 'application/json; charset=utf-8', 
    success: function(){window.alert('Done');} 
}); 

Struts.xml config

<action name="JSON" class="com.actions.json.JsonAction" method="getJSON"> 
    <result type="json"/> 
</action> 

Moja Akcja Class

public class JsonAction extends ActionSupport { 


    private String data; 


    public String getJSON() { 


     return ActionSupport.SUCCESS; 
    } 

    public String getData() { 
     return data; 
    } 

    public void setData(String data) { 
     this.data = data; 
    } 



} 

Mój problem polega na tym, jak otrzymać obiekt JSON w klasie działania.

UWAGA: Post obiektu JSON jest udany .. ja po prostu nie wiem, jak je otrzymać za pośrednictwem klasy działania .. PROSZĘ POMÓC Dziękuję

+0

Czy możesz udostępnić swoją klasę Akcji. Masz również zdefiniowany json typu wynikowego w swoim pliku struts.xml i zdefiniowany przechwytujący –

+0

'class =" coma, ctions.json.JsonAction "' typo in 'coma, ctions'? – Daniel

+0

Cóż, już korzystasz z wtyczki (json), więc wypakuj wystarczająco dużo, by wypełnić swoją klasę akcji danymi JSON wysłanymi z żądania, wszystko, co potrzebujesz, aby zadbać o format json i pewne drobne reguły, spójrz na wtyczkę docs. –

Odpowiedz

6
  1. Jest literówka w wejściu struts.xml
  2. Czy zdefiniowałeś wyniki płytek i przechwytywania w struts.xml. Please see this link
  3. Json wysyłany na serwer, nie zawiera żadnego klucza data. Tak więc zawsze będzie zero. Ponieważ json jest oznaczony jako obiekty. Musisz przekonwertować JSON na obiekty Java w ten sposób.

Podejście 1.

Tworzenie ustawiające dla lists,maps,number1,numberarray1,string1 i tak dalej. W górnej części this link jest zdefiniowany sposób to zrobić. Wtedy możesz uzyskać dostęp do wszystkich zmiennych w ten sposób.

Podejście 2. W swoim javascript zdefiniować nowy obiekt.

var sentData ={}; 
sentData ["sentData "] = data; 
// And in your ajax call , 
data: JSON.stringify(sentData), 

I w swojej klasie działania utwórz dla tego obiektu pobierające i ustawiające.

Map<K.V> sentData = new HashMap<K,V>(); 

Da ci to cały obiekt json jako mapę.

+0

moim problemem jest to, że moje dane w akcji są zawsze równe zeru – newbie

+0

Nie rozumiem – newbie

+0

nie mogę tego zrobić :( – newbie