それについてあまり考えずにsimpleformcontrollerに豆のリストへの結合に対処するための最良の方法は、私は次のようなものを行ってきましたデータベース呼び出し春
2の結果)私のコマンドオブジェクト
3にそのリストを置く)は、ユーザーがアウトデータを抽出)SomeBeans
4の属性を変更することができ、そのコマンドオブジェクトに基づいてフォームを作成します送信後のコマンドオブジェクトと私のデータベースに更新データを書き込む
私のコードは次のようなものになります。
<form:form>
<c:forEach var="bean" items="${beans}" varStatus="status">
<form:checkbox path="beans[${status.index}].someBooleanProperty" />${bean.name} <br>
</c:forEach>
</form:form>
コードが正常に動作しますが、それはちょうど夜が明けています:
public class UpdateThingsinListController extends SimpleFormController {
protected Object formBackingObject(final HttpServletRequest request)
throws Exception {
List<SomeBean> beans = database.getBeans();
Command comamnd = new UpdateThingsCommand()
command.setList(beans);
return command;
}
protected ModelAndView onSubmit(final HttpServletRequest request,
final HttpServletResponse response, final Object commandArg,
final BindException errors) throws Exception {
database.setBeans(commandArg.getList());
}
}
を私のJSPは次のようにsomthethingに見えます私の "豆"リストは2回作成されています(セッションフォームは私の場合はfalseでなければなりません)。 2番目の作成時に何か変更があった場合(Beanが見つからない場合、結果の順序が変わる)、バインドが乱れてしまい、解雇されます。コマンドオブジェクトをフォーム提出とマージする必要があるバインディングスキームは非常に危険であると私は考え始めています。
私の質問は、 - フォーム提出がリストに正しくバインドされることをどうやって確認するのですか?リストの索引以外にもこれを行う別の方法はありますか?オブジェクトIDは多分でしょうか?
おかげで、
-Morgan
私は、リストの代わりにMapを使用するべきだと考えているので、チェックボックスのタグは次のようになります: –
morgancodes