struts 2はJson形式のデータを返し、Listにオブジェクトフロントエンドが含まれているのに空のJsonを受信した問題について

1822 ワード

一、問題の説明
mvcフレームstruts 2を使用する場合、json形式のデータをフロントエンドに返す必要がある場合があります.しかし、一度に1つのListが返され、汎用が1つのエンティティである場合(例List messages)、フロントエンドが受信したjson配列は空である.
{"messages":[]}

Actionにもこの属性のgetterメソッドが追加され、struts.xmlのactionの構成は次のとおりです.

    
        messages
    


二、問題分析
資料を検索する過程でstruts 2が返すタイプがjsonであることを知った完全な構成パラメータは以下の通りである.ここで、プロパティ構成を行わない場合、デフォルトでは、戻り値のあるgetterメソッドの戻り値がすべてシーケンス化されます.
  • 属性rootは、どこからシーケンス化を開始するかを示し、図のようにdataMapのみシーケンス化する属性
  • を示す.
  • プロパティincludePropertiesは、複数のプロパティが含まれている場合、カンマを使用して
  • を分割する必要があるプロパティを表します.
    その他のプロパティの意味は図のコメントを参照してください.ここではincludePropertiesプロパティのみに注目します.
      
         
       dataMap  
         
       true  
         
       userList.*  
         
       userId  
    
    

    三、結論
    上図の構成と組み合わせてincludePropertiesのプロパティ値をmessages.*に構成し、フロントエンドはmessagesリストの値を正常に取得しました.結論を出すことができます.
    struts 2リストタイプの属性をシーケンス化する場合、デフォルトでは属性そのもののみがシーケンス化されますが、リストタイプ属性に保存されているオブジェクトをシーケンス化する必要がある場合は、自分で指定する必要があります
    リストタイプ属性のシーケンス化が必要なオブジェクトを指定する場合、以下のように構成できます.
        
      list.*
        
      list\[\d+\]\.id,list\[\d+\]\.name