2017-01-12 11 views
1

私は、ActionクラスにjQueryのgetJSON()によってJSONデータを含むリクエストを送信したいStruts 2ベースのWebアプリケーションを作成しています。これほどのことが起こっている。jQueryのgetJSON()が送信したStruts 2 Actionクラスのjsonリクエストデータの受信方法?

しかし、私のActionクラスはJSONデータを受け取ることができません。あらゆる努力が前もって高く評価されています。 struts.xmlで

$.getJSON("getPaycells", { 
    level: $(this).val(), 
    ajax: 'true' 
}, function(j){}); 

<action>要素:

<action name="getPaycells" class="pkg.ActionClassName">  
    <exception-mapping exception="java.lang.Exception" result="ERROR" /> 
    <interceptor-ref name="json"> 
     <param name="contentType">application/json</param> 
    </interceptor-ref> 
    <result type="json"/> 
</action> 

Actionクラス:

public class PayMatrix extends ActionSupport 
{ 
    private Map data = new HashMap(); 

    public Map getData() 
    { 
     return data; 
    } 

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

    public String execute() 
    { 
     System.out.print("MYDATA-"+data); 
     return null; 
    } 
} 
+0

これはJSONデータではありません。 Ajaxを使い始めるにはhttps://struts.apache.org/docs/ajax.htmlを読んでください。 –

答えて

0

trueにenableSMDを設定するhttp://tech.learnerandtutor.com/send-json-object-to-struts-2-action-by-jquery-ajax/

の試みで非常に良い記事があります

<interceptor-ref name="json"> 
    <param name="enableSMD">true</param> 
</interceptor-ref> 

また、以下のようないくつかのことを使用しよう:

$.ajax({ 
    url: "writeJSON.action", 
    data: data1, 
    dataType: 'json', 
    contentType: 'application/json', 
    type: 'POST', 
    async: true, 
    success: function (res) { 
     .... 
    } 
}); 

それは特定の性質を持っていない用量場合json interceptorはあなたの要求を破棄します。

私自身がorg.apache.struts2.json.JSONInterceptorにいくつかのブレークポイントを設定して解決しました。これは、私の要求にインターセプタが適用されない理由を助けます。

関連する問題