【问题标题】:Grails auto-reloading new controller actionsGrails 自动重新加载新的控制器动作
【发布时间】:2014-08-22 09:31:00
【问题描述】:

我已经

  1. 创建了新的 Grails 2.4.3 项目
  2. 创建TestController
  3. BuildConfig.groovy 中设置grails.reload.enabled = true
  4. 使用grails -reloading run-app 运行应用程序

我的控制器动作代码:

def index() {
    render "test"
}

当我将字符串 test 更改为 test2- 我在控制台中看到(在 Eclipse 中):

..................
|Compiling 1 source files

在重新加载页面后我看到test2 - 好的。

但是当我尝试添加新方法时:

def test3() {
    render "test3"
}

我明白了:

为什么?为什么连网址都没有?

示例 - 操作不存在:

有趣的是 - 当我创建一个全新的控制器时,新创建的控制器的 index 动作起作用了......

编辑

过了一会儿,我决定使用 spring-boot,事实上 - 它也不起作用。我认为 springloaded 是这里的问题,因为它没有在 @Controller 中选择添加的新方法

【问题讨论】:

  • 你添加了test3 action对应的view page吗?
  • render 方法会覆盖此行为(为某个操作查找某些视图)。如果我返回了模型,那么它应该搜索相应的视图。但是是的 - 我也试过这个:效果相同。
  • 我卡在这里了,你有没有找到解决这个@Xeon 的方法?
  • 同样的问题,只是重新启动在控制器中重新加载新操作。对现有操作的更改会重新加载。
  • @VitorHugo, @IsidroGH - 这是spring-loaded 的问题。我已经发布了答案。

标签: grails groovy reload spring-loaded grails-2.4


【解决方案1】:

我在 github repo 上问过同样的问题。

最新的弹簧式 SNAPSHOT 似乎工作正常

但它必须集成到 Grails 中——不幸的是,可能在下一个版本中:(

【讨论】:

  • 用最新版本覆盖了 grails-2.4.3\lib\org.springframework\springloaded\jars 中旧的弹簧加载 jar,它工作正常,谢谢 Xeon。
【解决方案2】:

适合我的解决方案:

1) 版本:

  • IDE:Intellij IDEA 14.1.3
  • JDK:jdk1.7.0_25
  • 圣杯:2.5.0

2) 在 BuildConfig.groovy 上:

grails.reload.enabled = true
grails.project.fork = [
        test: false,
        run: false,
]

3) 本来我的代码是在grails 2.4.4上编译的,所以我升级到了2.5.0。我对插件或任何东西的版本更改没有任何问题。我的猜测是这行得通,因为它使用了更高版本的弹簧加载。步骤:

  • set-grails-version 2.5.0
  • 干净
  • 删除目录工作(只是为了确定,我真的不知道这是否是好的做法)
  • 编译和/或转到 4 号

4) 使用此配置调试想法:run-app -reloading


完美运行,没有分叉调试,启用重新加载,重新加载后没有控制台错误,所有断点即使在代码更改后也能正常工作!

【讨论】:

  • 我已经尝试了上述所有步骤,但自动重新加载不起作用。我的环境如下:IDE:Intellij IDEA 2016.2 JDK:jdk1.8.0_101 GRAILS:2.5.4
【解决方案3】:

我冒昧举报this issue to Grails

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-22
    • 2012-04-25
    相关资源
    最近更新 更多