【问题标题】:how to debug a gsp page? (no grails, just gsp)如何调试 gsp 页面? (没有 grails,只有 gsp)
【发布时间】:2009-10-30 11:46:17
【问题描述】:
【问题讨论】:
标签:
debugging
ide
groovy
gsp
【解决方案1】:
您的 GSP 中的大部分逻辑都应该封装在 TagLib 中,并且您可以调试它们(至少使用 IntelliJ),就像任何其他 Groovy 代码一样容易。
如果您的 GSP 中确实有很多 scriptlet 代码(您不应该这样做),并且您想对其进行调试,那么您只能做到println。另一种可能性是查看为您的 GSP 生成的 Groovy 代码的源代码。这可以通过将showSource 参数附加到URL 来完成,如here 所述。
【解决方案2】:
我使用 hack:向任何控制器添加一个方法,例如 static def debugme(def param) { def a = param },并从 gsp 代码中调用它:<% ThisController.debugme(this) %> 或 <% ThisController.debugme(params) %>
(您知道在编辑控制器或视图后不必重新启动应用程序,对吧?)
我也不认为所有的逻辑都应该在标签库中:特定于页面的逻辑应该在控制器或视图中清晰可见。我们在控制器或域类中拥有大部分逻辑。
【解决方案3】:
向 Config.groovy 添加一个设置,生成的 gsp 文件将被写入一个目录:grails.views.gsp.keepgenerateddir='/some/existing/directory'
(目标目录必须存在且可写)
更多信息:
http://jira.codehaus.org/browse/GRAILS-4422
应该可以使用标准 Java 调试器调试生成的 groovy 代码。
很久以前我这样做了(当我为 grails 创建补丁时),我想我使用 jswat (http://code.google.com/p/jswat/) 来调试 gsps。我无法让 eclipse 找到源文件,但这可能现在在 Spring Tool Suite Eclipse 中工作。
您必须逐步/逐步调试常规代码并使用过滤器,否则您可能会丢失步骤点(因为闭包?)。这已经是另一个故事了...