Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使Grails应用程序设计器变得友好,而无需在视图更改后重新部署?_Grails_Gsp - Fatal编程技术网

如何使Grails应用程序设计器变得友好,而无需在视图更改后重新部署?

如何使Grails应用程序设计器变得友好,而无需在视图更改后重新部署?,grails,gsp,Grails,Gsp,我已经很久没有真正使用J2EE了,所以请原谅我的无知。我最近参与了一个Grails项目,这使我对Java的兴趣再次达到顶峰,尤其是对Grails,因为它使在Java平台上构建web应用程序变得有趣。话虽如此,我想请一位专家评论一下我对使用Grails构建的应用程序的以下要求: 设计团队(web设计师)需要访问GSP页面并编辑视图文件(布局、模板等),而不会打扰开发团队(软件开发人员)。此场景可以在构建期间和部署到生产中之后发生 设计师、开发人员和业务用户之间的沟通水平在这里不是问题。然而,大约有

我已经很久没有真正使用J2EE了,所以请原谅我的无知。我最近参与了一个Grails项目,这使我对Java的兴趣再次达到顶峰,尤其是对Grails,因为它使在Java平台上构建web应用程序变得有趣。话虽如此,我想请一位专家评论一下我对使用Grails构建的应用程序的以下要求:

设计团队(web设计师)需要访问GSP页面并编辑视图文件(布局、模板等),而不会打扰开发团队(软件开发人员)。此场景可以在构建期间和部署到生产中之后发生

设计师、开发人员和业务用户之间的沟通水平在这里不是问题。然而,大约有40%的时间,涉及的业务部门请求对前端进行更改,这些更改对开发人员的时间没有影响,但需要设计团队成员的时间。目前,部署工作流遵循Grails应用程序,将War文件部署到Tomcat服务器。我认为有一种更简单的方法可以让设计团队在不经历构建和部署生命周期的情况下进行UI更改

一些设计团队成员在过去接触过PHP,有时会忽略覆盖模板文件以使UI更具功能或改进布局模板的能力。我希望有一种类似的方式来适应Grails中的这种简单性。有人告诉我,分解War文件可能是一种选择,但这仍然需要重新加载Tomcat托管的应用程序


如果您认为我以错误的方式看待所需的解决方案,请插话,因为我更感兴趣的是为所有相关团队成员制定一个可行的折衷方案。谢谢。

您可以通过在开发模式下运行应用程序来运行具有应用程序版本的服务器。然后,设计师可以对视图进行更改,然后重新加载。他们需要能够通过某种共享访问服务器上的源代码。另外,如果您签出了源代码,那么设计人员就可以从服务器提交他们的更改

缺点是,如果重新加载失败或内存不足(众所周知,大量重新加载都会导致内存不足),开发人员可能需要停止并启动应用程序,或者您可以向设计人员提供一个脚本,让其运行以跳出应用程序

在开发模式下运行和通过run应用程序运行显然会影响性能,但在您的情况下,这可能是一个不错的折衷方案

干杯


Lee

您需要在Config.groovy中指定以下设置:

grails.gsp.enable.reload=true
grails.gsp.view.dir="/path/to/gsp/views"
“grails.gsp.view.dir”通常是您签出的SVN repo的路径。然后,您可以在每次需要更新视图时“svn up”


有一个警告:当一个GSP视图被编译时,它会使用permgen。最终,您将用完并需要重新启动服务器。

这可能不是此问题的直接答案,但由于您似乎关注设计师在项目中的角色,您还可以检查my,这使设计师能够查看GSP页面,即使使用自定义标记,这得益于“通过属性声明标记”功能

你应该调查一下wicket,看看我最近的帖子:这样UI和代码就可以很好地分开,在NetBeans中你可以立即看到对代码/html的更改。还有一个wicket插件,但我不知道这是否有效……wicket真的将UI与Java代码分离开来,这样就可以在不需要重新部署的情况下修改和更新UI了吗?我不熟悉这个web应用程序框架,所以如果您能提供任何链接来帮助我更好地理解它,我将不胜感激。我也不知道如何在现有的Grails应用程序中使用Wicket。有几种方法可以使用外部html文件(它们不会与java文件并排放置)。如果你愿意,我可以在邮件列表上问一下。对于grails应用程序,有grailswicket插件Karussell,谢谢。是的,如果你能在邮件列表上询问,我将不胜感激。看看这篇文章,谢谢你的建议。我们确实探索了在开发模式下使用Grails应用程序的选项,但是性能很快就成了一个问题。也许我们可以再多使用一些设置,但据我所知,对于生产使用,不建议使用这种方法。没错,这不是为了刺激我们,它总是比部署的战争慢得多。不幸的是,我想不出任何其他方法来实现您想要的。出于性能原因,生产已关闭动态重新编译。这就是为什么它是生产。为便于开发,已启用开发功能。:)我们通常让我们的设计师学习如何从Git中提取、构建和运行应用程序,以及如何就地开发。很多时候,他们不知道如何使用版本控制,所以我们必须教他们,但一旦他们习惯了,在同一个空间工作,我们会得到巨大的好处。谢谢你的评论,John。这里的设计团队也习惯于使用版本控制。我们使用颠覆。然而,在一个理想的世界里,我希望看到设计团队只进行设计。正如我所说,如果我能以某种方式将编码元素与设计元素分离出来,那就太好了。我不知道是否有另一种方式来看待这个问题,从而得出一个合理的解决方案。