0

私はプレイを使用しています!java プロジェクトでフレームワーク 20 を使用していて、フォームをビューに渡すときに問題が発生しました。

コントローラーには、次のコードがあります。

Filter filter = new Filter();
//add some state to the filter object
Form<Filter> filterForm = form(Filter.class).fill(filter);
Logger.info("FilterForm: " + filterForm.get().toString()); // So far so good
return ok(filterView.render(filterForm));

そしてテンプレートで:

@filterForm.hasErrors() // renders false
@filterForm.data().isEmpty() // renders true!!
@*  @filterForm.get().toString()  *@ throws an Exception: No Value

コントローラーでマップを介してフィルター状態を入力すると、同じエラーが発生します。

filterForm = filterForm.bind(aMapWithTheState);

この動作は、コードでフィルターを埋める場合のみです。私がfilterForm.bindFromRequest()他の方法で行うと、すべて正常に動作します。

ありがとう!!

4

1 に答える 1

0

解決しました。

bind以前と同じように、状態のあるマップを使用してフォームのメソッドを使用する必要がありました。ただし、正しい方法は、プロパティ名も渡すことです。

Map<String, String> formState = new HashMap<String, String>();
formState.put("name", name);
formState.put("birthDate", birthDate);
formState.put("address", address);

filterForm = filterForm.bind(formState, "name", "birthDate", "address");

それにもかかわらず、ドキュメントには、プロパティ名は必須ではないと記載されています。

于 2013-01-09T16:02:55.367 に答える