クライアント側からサーバーにデータを送信し、ファイルのダウンロードに処理しようとしています。ファイルのダウンロードを初期化するため (AJAX ではなく)、単純な HTML フォームを使用しています。フォーム フィールドの 1 つが項目の配列です。(他の 2 つは名前と説明の文字列です)。フォームを送信する前に、このフィールドを文字列 (JSON.stringify) にシリアル化しています。
サーバー側では、これを単一の型または 3 つの個別の型 (文字列 + 文字列 + リスト/配列) に変換するために、100 万の手法 (@ModelAttribute と @RequestBody、さまざまな jackson マッピング Bean 構成) を試しました。
私が見つけた例はAJAX専用でした...誰かが実際の例または説明を提供できますか?
=======
更新:コレクションを JSON.stringify して入力の 1 つに渡すことで回避策を実装しました。サーバー側では次のようにします。
@RequestMapping(method = RequestMethod.POST, value = "exportSectionsToExcel")
public HttpEntity<byte[]> createExcelWorkBook(@ModelAttribute ExportSectionsListForm exportSectionsListForm) {
Section[] sectionObjects = gson.fromJson(exportSectionsListForm.getSections(), Section[].class);
...
文字列のみを含む ExportSectionsListForm オブジェクトを使用:
public class ExportSectionsListForm {
private String name;
private String url;
private String rssUrl;
private String sections;
...
(omitting ctor, getters and setters)
さらに、この有望なリンクを見つけました: http://viralpatel.net/blogs/spring-mvc-multi-row-submit-java-list/ しかし、試していませんでした - 入力要素を動的に生成する必要があるようですこれは機能しますが、実際には正しい解決策かもしれません。誰もこれを試しましたか?