0

我正在使用带有 STS 3.2.0 的 Spring Roo 1.2.4。

我有一个电子邮件对象,它是一个域类,因此它具有以下注释:

@RooJavaBean
@RooToString
@RooJpaActiveRecord

我的 EmailController 有以下注释:

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

我的 EmailServiceController_Roo_Controller_Json.aj 已完美生成。

现在,我想要一个 EmailBean 对象,它代表我的 Email 类中的一部分字段,这样我就可以允许外部系统通过仅传递通过 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 回答