我正在使用Spring Roo 1.2.4和STS 3.2.0。
我有一个Email对象,它是一个域类,所以它有以下注释:
@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文件?我做错了吗?
答案 0 :(得分:0)
在进一步了解在控制器上为@RooJpaActiveRecord注释的域类生成的实际json方法之后,我注意到它们都面向CRUD操作(即影响数据库)。这意味着从Roo的角度来看,为不是域类(存储在db中)的实体生成控制器json方法是没有意义的,因为它不知道您正在寻找什么样的业务方法。这意味着我需要在我的控制器中手动创建自己的,因为只有我知道我想要做什么。