1

XxxController_Roo_GvNIXDatatables.aj 未针对 Xxxcontroller.java 类中的更改进行更新。当向控制器类添加“update=false, delete=false”时,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 类。这么老:

@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 文件中,更新和删除方法没有被删除。这会导致错误:

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

问题:

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

1 回答 1

1

首先,感谢您的报告和您对 gvNIX 项目的兴趣。

第二,你是对的。当 Controller 配置为删除一些操作,如更新或创建时,应更新 Datatables aspectJ 文件。

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

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

最好的问候,并再次感谢您!

于 2015-08-25T06:34:22.410 回答