2016-11-21 58 views
1

Jsonオブジェクトがあり、struts2でそれを取得する方法がわかりません。そこに2つの配列があり、javaのArrayListにどのように転送するのですか?JsonをStruts2に送るには?

enter image description here

var params = { 
     'goodsIdList':goodsIdList, 
     'goodsCountList':goodsCountList 
    } 
    console.log(params); 
    $.ajax({ 
     type: 'post', 
     url: "checkGoodsIsEnough", 
     data: params, 
     dataType:"json", 
     async: true, 
     success: alert("success"), 
     error: function (jqXHR) { 
      alert(jqXHR.status); 
     } 

    }) 
+0

はそれを行う方法についての例です:[Struts2のとJSONの例](https://www.mkyong.com/struts2/struts-2-and-json-example/) –

+0

私はしたいですjsonオブジェクトを取得する方法を教えてください。struts2で送信され、jsonオブジェクトをajaxに送信しません。 – lhw1995

答えて

2

私はあなたがすでにJSON形式のサポートを提供するために、あなたのstruts.xmlにこの設定を追加したと仮定します:

<action name="checkGoodsIsEnough" class="ClassOf_CheckGoodsIsEnough"> 
     <interceptor-ref name="defaultStack"/> 
     <interceptor-ref name="json"> 
      <param name="enableSMD">true</param> 
     </interceptor-ref> 
</action> 

このような場合は、変換することを忘れていけませんあなたのjavascriptオブジェクトを使用してJSON文字列形式に変換する:

var JsonParams = JSON.stringify(params); 

ポストコールを次のようにしてください:

$.ajax({ 
    type: 'post', 
    url: "checkGoodsIsEnough", 
    data: JsonParams, 
    dataType:"json", 
    async: true, 
    success: alert("success"), 
    error: function (jqXHR) { 
     alert(jqXHR.status); 
    } 

}); 

願っています!

+0

jsonオブジェクトは正しいですが、struts2で取得する方法はありますか? – lhw1995

+0

"ModelDriven"インタフェースの実装を避け、 –

+0

を定義し、要求の各パラメータに "attribute"、 "setter"、 "getter"を定義する必要があります。 –

0

struts2-json-pluginが必要です。

これは2つの主な目的役立つ:

#1 - (アクションからJSPに)json結果を通してJSONにジャワオブジェクトを変換します。

#2 - (JSPからアクションまで)jsonインターセプタを通じてJSONのJavascriptオブジェクトを変換します。

最初は、あなたが、たとえば、jsonインターセプタを含むインターセプタスタックを定義する必要があります(それはあなたが望むものである)は、第2のために、自動化されている間:

<package name="myPackage" extends="json-default"> 
... 
    <action name="myAction" class="foo.bar.MyAction"> 

     <interceptor-ref name="json"   /> <!-- #2 is here --> 
     <interceptor-ref name="defaultStack" /> 

     <result name="success" type="json"> <!-- #1 is here --> 
      <param name="root">myJavaObjectThatWillBecomeJson</param> 
     </result> 
     <result name="error">error.jsp</result> 
    </action> 
    ... 

それが動作していることを確認した後、 、すべてのアクション内でこの構成を書き換えるのではなく、インターセプタ・スタックを構成で一度定義し、デフォルトのインターセプタとして設定することができます。 JSONインターセプターが正常に実行するには

、条件は以下のとおりです。

  • "content-typeは" "application/json"
  • JSONコンテンツが十分に形成されなければならないでなければならない、文法のためjson.orgを参照してください。
  • アクションには、入力する必要のあるフィールドのパブリック "セッター"メソッドが必要です。
  • プリミティブ(int、long ...文字列)、日付、リスト、マップ、プリミティブ配列、その他のクラス (詳細は後で説明します)、およびその他のクラスの配列です。
  • JSON内のリストまたはマップ内に配置されるオブジェクトは、Map(プロパティから値へのマッピング)タイプで、 の整数はLong型で、10進数は Double型、およびList型の配列。ここ
関連する問題