私はPlay 2.6 Javaフォームの例を使用しています。これは単純なWidget.javaモデルとWidgetData.javaクラスを持ちます。このクラスは、ウィジェットフォームにマップするDTOを処理するフォームです(私はそれを得ていません)。Java Playフォームの提出
この例は機能しますが、コントローラで何が起こっているかをよりよく説明する必要があります。問題のコントローラーメソッドは次のとおりです。
public class WidgetController extends Controller {
private final Form<WidgetData> form;
private final List<Widget> widgets;
@Inject
public WidgetController(FormFactory formFactory) {
this.form = formFactory.form(WidgetData.class);
this.widgets = com.google.common.collect.Lists.newArrayList();
}
public Result createWidget() {
final Form<WidgetData> boundForm = form.bindFromRequest(); #1
WidgetData data = boundForm.get(); #2
widgets.add(new Widget(data.getName(), data.getPrice()));
return redirect(routes.WidgetController.listWidgets());
}
}
私は混乱する行に番号を付けました。
#1で何が起こっていますか?彼らは両方とも同じタイプなので、formからboundFormに何が作成されていますか?ここではWidgetDataセッターメソッドが設定されています。
したがって、WidgetDataプロパティが既に設定されている場合、#2で何が起きていますか?プロパティーは設定されていますか?ウィジェットモデルを作成するには実際のWidgetDataオブジェクトが必要ですか?
バージョン2.0〜2.6用の例とドキュメントは、互いに矛盾します。