XxxController_Roo_GvNIXDatatables.aj 未针对 Xxxcontroller.java class 中的更改进行更新

XxxController_Roo_GvNIXDatatables.aj not updated for changes in the Xxxcontroller.java class

XxxController_Roo_GvNIXDatatables.aj 未针对 Xxxcontroller.java class 中的更改进行更新。 当将 "update=false, delete=false" 添加到控制器 class 时,XxxController_Roo_Controller.aj 通过删除更新和删除方法来更新,但是对于 XxxController_Roo_GvNIXDatatables.aj 则不是这种情况。这反过来会导致错误,如下所述。 一个例子 作为示例,我在下面有 Spring roo 脚本

"project --topLevelPackage com.springsource.petclinic

jpa setup --provider HIBERNATE --database HYPERSONIC_IN_MEMORY

entity jpa --class ~.domain.Pet --sequenceName PET_SEQ
field string --fieldName name --notNull --sizeMin 1
field number --fieldName weight --type java.lang.Float --notNull --min 0

web mvc setup
web mvc all --package ~.web

web mvc jquery setup
web mvc jquery all

web mvc datatables setup
web mvc bootstrap setup

web mvc datatables add --type ~.web.PetController

在某些用例中,例如交易,您不希望用户更新或删除,因此我通过添加 "update=false, delete=false" 更改了 PetController.java class。这么老了:

@RequestMapping("/pets")
@Controller
@RooWebScaffold(path = "pets", formBackingObject = Pet.class)
@GvNIXWebJQuery
@GvNIXDatatables(ajax = true)
public class PetController {
}

新:

@RequestMapping("/pets")
@Controller
@RooWebScaffold(path = "pets", formBackingObject = Pet.class, update=false, delete=false)
@GvNIXWebJQuery
@GvNIXDatatables(ajax = true)
public class PetController {
}

效果是 PetController_Roo_Controller.aj 文件中删除了更新和删除方法。

public String PetController.update(@Valid Pet pet, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
public String PetController.updateForm(@PathVariable("id") Long id, Model uiModel) {
public String PetController.delete(@PathVariable("id") Long id, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) {

然而 在PetController_Roo_GvNIXDatatables.aj文件中,update和delete方法没有去掉。 这导致错误:

  1. 更新方法(Pet, BindingResult, Model, HttpServletRequest) 是 未定义类型 PetController
  2. 方法 delete(Long, Integer, Integer, Model) 未定义 PetController 类型

问题:

  1. 我的假设是否正确,即两个 aspectJ 文件应该被同等对待?
  2. 有解决办法吗? 我不想强推,因为在我看来他们不应该在那里。 从 PetController_Roo_GvNIXDatatables.aj 中删除代码也无济于事,因为它们会在我下次启动 Roo shell 时自动插入,顺便说一句,这是正确的。

首先,感谢您的报告以及您对 gvNIX 项目的关注。

第二,你是对的。当控制器配置为删除更新或创建等操作时,应更新数据表 aspectJ 文件。

不幸的是,没有推入没有解决方法。

我会在下一版本的 gvNIX 中考虑这个问题。

此致,再次感谢!