1

これをどのように尋ねればよいかさえわかりませんが、試してみます。

私がサポートしている既存のアプリケーションは、動的に生成された一連の値で構成されています。フォームは行と列のマトリックスに分割され、JSP はこの情報を使用して、必要なフォーム (入力) を構築します。フォームを作成するために、次のような Java クラスをいくつか用意しました (ほとんどの場合、私が何をしているのかを理解できるように疑似コードを使用しています)。

class Form {
  List<FormParts> parts;
}

class FormParts {
  List<FormRow> rows;
  List<FormHeader> headers;
}

class FormRow {
  String name;
}

class FormHeader {
  String name;
}

これらのクラスを使用して、FormParts をループし、FormRows と FormHeaders を使用して form:inputs のテーブルを作成し、カウンターを使用して結果の回答にインデックスを付けることで、JSP で動的にフォームを作成します。

class FormResponse {
  List<FormAnswer> answers;
}

class FormAnswer {
  int rowNumber;
  int headerNumber;
  String value;
}

私が抱えている問題はList<FormAnswer> answers. これはリストであるため、DB から FormResponses をリロードする機能を提供できるようにするために、空のもの (null) も含めてすべての回答を保存する必要があります。これにより、テーブルに大量のジャンク行が作成され、アプリケーションが遅くなります。しかし、約 4 か月前にこれを最初に書いたとき、Spring MVC を Map of Maps にバインドする方法を見つけようとしてしばらく苦労したことを覚えています。いらない答え。問題は、Spring MVC の内部で、これらのリストとマップが LazyList と LazyMap になることだったことを覚えています。

これに対する別の解決策はありますか?

4

1 に答える 1

0

Auto populating Setで、Spring を使用した動的フォームに関する私の回答を確認してください。

キーはMap<Integer, YourObject>、リストの代わりに使用することです。これにより、インデックスにギャップが生じる可能性があります。

ジェネリックが消去されるため、Map of Maps を使用することはできません。マップは常に object のプロパティである必要があります。したがって、あなたの例は問題ないはずです。

LazyList / LazyMap の概念は長い間死んでいます。Spring は、任意のリストおよびマップ タイプを操作できます。Map プロパティが null の場合、デフォルトで のインスタンスLinkedHashMap作成さます


他の可能性としては、バインドと検証を手動で行い、JSON をワイヤ経由で送信する (つまり、フォームを JSON として送信する<input type="hidden">か、AJAX 経由で直接送信する) ことができます。

于 2013-06-12T21:56:23.607 に答える