2012-05-07 49 views
0

我有一个简单的grails(2.0.3)应用程序,它们有一些领域模型,控制器和服务。在我保存并尝试在另一台机器上运行后,我收到了一些奇怪的行为。打开现有的Grails项目

索引页面上生成的控制器链接看起来正确,但被点击重定向到localhost:8080/appname/appname,使用404而不是localhost:8080/appname/controller/action。

但是,当我尝试用“grails generate-domain-class”手动重新创建模型时,生成一个控制器并创建一个服务类,它工作正常。移动它后,似乎某些项目数据丢失了,或者它可能存储在我的项目文件夹之外的某处。

我需要做些什么来保存我在第一台机器上的工作项目并在第二台机器上重新打开它?我的应用程序创建时不使用任何IDE,只是命令行和文本编辑器。

编辑

试图重现此问题,而无需缴纳所有不必要的代码后得到了一个没有运动项目到另一台机器一样。

当我创建一个使用注射服务(后读this)控制器:

class BookController { 

    def bookService 

    def index() { 
     redirect(action: "list", params: params) 
    } 

    def list() { 
     def result = bookService.list(params) 
     if(!result.error) { 
      return [ bookInstanceList: result.bookInstanceList, 
       bookInstanceTotal: result.bookInstanceTotal ] 
     } 
     flash.message = g.message(code: result.error.code, args: result.error.args) 
     redirect(url: resource(dir:'')) 
    } 
} 

,并产生观点我尝试在索引页访问生成器的URL,并得到本地主机:8080 /应用程序的名字/应用程序的名字与404 。在grails控制台中不显示错误消息。

+0

如果它不是很多,你可以给出再现步骤和/或代码?想尝试一下并检查。 –

+0

最后,我设法解决了这个问题。控制器方法中的最后一个字符串导致了这种奇怪的行为因此,将应用程序从一台机器移至另一台机器会间接造成问题在第一台机器的数据库表中不是空的,应用程序没有丰富的那一行。感谢您的时间! – karejscha

回答

0

在将项目移动到不同的机器后发生Grails问题时,我发现有两件事有帮助。首先是运行

grails upgrade 

当它提示你,如果你想升级项目说是的。这样做会重写任何您可能尚未移动的缺失配置文件。二是运行

grails clean 

这将删除你可能已经从旧系统移到任何编译的类到新的一个。

+0

谢谢你的回复。不幸的是,这并没有解决问题。 在阅读[this]后,我已经尝试了此解决方案(http://grails.1312388.n4.nabble.com/nondeterministic-behavior-of-g-link-and-g-createLink-td1341333.html)文章。这看起来非常相似,但即使在'grails升级'和'grails clean'之后,我仍然得到这个“双重appname模式”。 – karejscha