首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络基础 >

Grails1.3.x至1.4.0(2.0)升格实践

2012-06-28 
Grails1.3.x至1.4.0(2.0)升级实践?这几天把一个Grails做的Web应用从1.3.7升级到1.4.0(目前还是M1),有很多

Grails1.3.x至1.4.0(2.0)升级实践

?

这几天把一个Grails做的Web应用从1.3.7升级到1.4.0(目前还是M1),有很多兼容性问题,应用几乎都跑不起来,怪不得官方已经准备把1.4.0改成2.0发布。但幸运的是应用比较简单,问题并不多,也不很严重,可以通过修改少量代码来移植,下面讲述我遇到的问题以及解决过程,希望对准备升级的程序员有一些参考价值。主要有以下几项:

?

?

1. 自定义的js文件无法导入使用,且在IDE中修改js文件Web服务器不会自动加载(reload)

自定义的js原来用<g:javascript library="xxxxx"/>方式导入的,现在已经无效了,改为以下方式导入:

?

刷新页面,可以看到生成了<appname>/static/js/xxxxx.js,而不是原来的<appname>/js/xxxxx.js,而对<appname>?js/xxxxx.js的访问会自动重定向到static的资源上,这是Resource插件在起作用,此时的js文件(当然也包括其他资源,如CSS, images)作为了静态资源,任何对js文件的改动都不会对运行时的Web服务器生效。为了便于开发调试,需要在Config.grovvy中加入设置

<g:setProvider library="jquery"/>

?

在layout/main.gsp中按照下面方式加入<r:layoutResource/>标签:

?

<head>  <g:layoutHead />  <r:layoutResources/></head>

?

此时刷新页面,查看网页代码可以发现已经生成了基于jQuery的代码。

?


3. 默认的开发数据库从HSQL改为H2。

因为之前我就把测试数据库改为了H2,因此在这个上面没有出现任何兼容性问题。不过H2确实是值得推荐的内存数据库,体积很小,但是功能齐全,开箱即用,与HSQL完全相同的工作模式和使用方法,配置方式都是一样的,但是比HSQL更加稳定(至少我是这么认为的,HSQL我无法开箱即用,我只是要做测试而已),功能更多。更为有趣的是,它自带了一个Web版本管理查询界面,用起来也很顺手。

?

?

4. createLinkTo(url="/")标签使用出错。

createLinkTo标签在1.4中被废弃,文档建议改用resource,而实际情况应该使用createLink标签,将代码改为createLink(uri:'/')即可。

?

?

5. 在Controller内定义的方法 def foo() 调用报错

错误信息为:

groovy.lang.MissingMethodException: No signature of method: xxx.yyy.foo() is applicable for argument types: (java.lang.String) values: [XXXXXX]?

把方法定义def foo()改为 protected foo() 形式的定义即可。这个有点奇怪,是因为闭包的问题?还是def定义的可访问性原因?反正我没搞清楚,不想太深究。

?

?

热点排行