0

STS 3.2.0 で Spring Roo 1.2.4 を使用しています。

ドメイン クラスである Email オブジェクトがあるため、次の注釈があります。

@RooJavaBean
@RooToString
@RooJpaActiveRecord

私の EmailController には次の注釈があります。

@RequestMapping("/emails")
@Controller
@RooWebScaffold(path = "emails", formBackingObject = Email.class)
@RooWebJson(jsonObject = Email.class)

私の EmailServiceController_Roo_Controller_Json.aj は完全に生成されます。

ここで、Email クラスのフィールドの一部を表す EmailBean オブジェクトが必要です。これにより、ドメインの残りの部分と同様に、json を介して必要な関連フィールドのみを渡すことで、外部システムが Email オブジェクトを作成できるようになります。クラスは、保存時にシステムによって生成されます。

EmailBean に次のアノテーションを付けました。

@RooJson
@RooJavaBean
@RooToString

ご覧のとおり、@RooSpaActiveRecord はありません。この Bean はデータベース内の何も表していない (ドメイン クラスではない) ためです。

ここで、EmailServiceController を作成し、次のように注釈を付けます。

@RequestMapping("/service/emails")
@Controller
@RooWebJson(jsonObject = EmailBean.class)

EmailServiceController_Roo_Controller_Json.aj は生成されません。どうしてこれなの?@RooSpaActiveRecord アノテーションを EmailBean に追加すると、EmailServiceController_Roo_Controller_Json.aj が生成されます。@RooSpaActiveRecord アノテーションを使用して EmailBean にアノテーションを付けると、Roo が json コントローラー aj ファイルしか生成しないのはなぜですか? 私は何か間違ったことをしていますか?

4

1 に答える 1

0

@RooJpaActiveRecord でアノテーションが付けられたドメイン クラスのコントローラーで生成される実際の json メソッドをもう少し調べたところ、それらはすべて CRUD 操作 (つまり、データベースに影響を与える) を対象としていることに気付きました。これは、Roo の観点からは、探しているビジネス メソッドがわからないため、ドメイン クラス (db に格納されている) ではないエンティティに対してコントローラー json メソッドを生成しても意味がないことを意味します。これは、自分が何をしたいのかを知っているのは自分だけなので、自分のコントローラーで自分自身を手動で作成する必要があることを意味します。

于 2013-07-02T13:01:38.897 に答える