2013-07-01 4 views
0

Я использую Spring Roo 1.2.4 с STS 3.2.0.Spring Roo 1.2.4 @RooWebJson не генерирует файлы .aj, если поддержка jsonObject не имеет @RooJpaActiveRecord

У меня есть объект электронной почты, который является классом домена, поэтому он имеет следующие аннотации:

@RooJavaBean 
@RooToString 
@RooJpaActiveRecord 

Моих EmailController имеют следующие аннотации:

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

Моего EmailServiceController_Roo_Controller_Json.aj генерируется отлично ,

Теперь я хочу объект EmailBean, который представляет часть полей из моего класса электронной почты, так что я могу разрешить внешним системам создавать объект электронной почты, передавая только соответствующие поля, которые требуются через json, поскольку отдых на классе домена генерируется системой при сохранении.

Я аннотированный EmailBean с:

@RooJson 
@RooJavaBean 
@RooToString 

Как вы можете видеть, не @RooSpaActiveRecord, так как этот компонент оленья кожа представлять что-либо в Databse (не класс домена).

Теперь, при создании EmailServiceController и аннотирования с:

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

Нет EmailServiceController_Roo_Controller_Json.aj генерируется. Почему это? Если я добавлю аннотацию @RooSpaActiveRecord к моему EmailBean, тогда будет создан MailServiceController_Roo_Controller_Json.aj. Почему Roo генерирует только файл jj контроллера json, если я комментирую EmailBean с помощью аннотации @RooSpaActiveRecord? Я делаю что-то неправильно?

ответ

0

После того, как вы немного поработали над фактическими методами json, которые генерируются контроллером для класса домена, аннотированного с помощью @RooJpaActiveRecord, я заметил, что все они ориентированы на операции CRUD (т.е. влияют на базу данных). Это означает, что с точки зрения Roo не имеет смысла генерировать контроллеры json-методов для объектов, которые не являются классами доменов (хранятся в db), поскольку они не будут знать, какие бизнес-методы вы ищете. Это означает, что мне нужно будет создать свой собственный вручную в моем контроллере, поскольку только я знаю, что я хочу делать.

Смежные вопросы