0

Spring(3.1.0)とHibernate(4.1.1)を学習します。ほとんどの開発者がフォームデータを処理するときに何をするのか疑問に思っています。データの送信に使用されるフォームを含むJSPを作成する場合、通常、そのフォームの入力フィールドに固有のクラスを作成してそのサーバー側を処理しますか、それともエンティティクラスを使用してフォームの要素にバインドしますか? ?

Location、StoreType、Storeの3つのエンティティクラスを持つアプリケーションがあるとします(StoreにはStoreTypeとLocationがあります)。/ CreateStore JSPページのフォームには、すべての場所を含むドロップダウン選択ボックス、すべてのStoreTypeを含む別のドロップダウン選択ボックス、およびストア名、ストアマネージャーなどを含むその他のテキスト入力フィールドがあります。

List locationNames、List storeTypes、String storeNameなどを使用してCreateStoreFormクラスを作成し、これをモデルに配置しますか?または、さまざまなエンティティクラスをすべてモデルに個別に配置しますか?私は後者のアプローチを使用していますが、ユーザーが同じ画面に連続してリクエストを行った場合に、特に画面を再入力する場合は前者の方が適していると思います。

4

2 に答える 2

1

フォームをマップするクラスを用意し、フォーム クラスから Hibernate が操作を行うために使用する実際のモデル クラスに変換する util メソッドを作成することは常に良いことです。

ドロップダウンについて@ModelAttributeは、リストを返すメソッドとフォームで使用できるメソッドを別々に使用できます。また、フォーム クラスまたはエンティティ クラスに追加する必要はありません。

@Controller
public class MyController {
    @ModelAttribute("productsList")
    public Collection<Product> populateProducts() {
        return this.productsService.getProducts();
    }
    // @RequestMapping etc omitted for brevity
}
于 2012-06-21T07:29:25.183 に答える
1

あなたが言及した両方のアプローチは良いです。ただし、それらの選択は要件に基づいています。質問で言及した場合は、locationNames と storeTypes を渡す 2 つのリストが単なる参照フィールドであるため、2 番目のアプローチの方が適しています。実際のモデル クラス (storeName フィールドと storeManager フィールドを持つ) には、location と storeType の両方の ID が含まれている必要があります。

したがって、フォームを送信すると、ストア プロパティを持つモデル クラスのみがデータベースに格納されます。他のリスト フィールドは単なる参照データであり、他のフィールドと一緒にデータベースに保存することはありません。

これがお役に立てば幸いです。乾杯。

于 2012-06-21T05:02:58.833 に答える