欢迎来到天天文库
浏览记录
ID:34723172
大小:84.65 KB
页数:25页
时间:2019-03-10
《groovygrails经验baidu》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、作者:杨港更新时间:2012年4月6日17:38:311、在gsp页面里写注释,如果注释是中文的话,有时会出现gsp编译错误,可能跟中文字节有关系,解决办法:在中文注释后多加一个空格2、grails如果要连接数据库,那grails开头的jar必须放在项目WEB-INF/lib里,其他jar可以放在web服务器的共享lib里3、grails中的gorm在操作数据库是出错,但没有任何日志记录4、grails服务类的文件名与类的名称必需一致,不然虽然编译通过,但grails内部封装时无法正确识别5、grails工件的类名称,第一个字母必需大写6、grai
2、ls同类工件的类名称不能重名,即使包名称不一样,类名称相同,这种情况也是不行,在grails内部会解析出现问题7、服务类经验:1)、grails服务类的名称,必须以Service结尾,不然在grails里无法正确识别。2)、服务类运行时是单件模式。3)、服务类默认是开启事务(数据库事务),如果没有用到数据库事务最好关闭事务,否则数据库连接可能占用过多,造成连接池里连接不够用。statictransactional=false//禁用事务8、配置使用经验:1)、把数据库配置、日志配置都放在外面,运行时载入,这样工程部署完还可以修改配置。实现方法如下:
3、修改Config.groovygrails.config.locations=["classpath:config/spy.properties","classpath:config/Log4jConfig.groovy","classpath:config/SystemConfig.groovy","classpath:config/DataSource.groovy","classpath:projectconfig/encode.properties"]//spy.properties配置必须放在Log4jConfig.groovy之前,否则
4、Log4jConfig.groovy的配置将被spy.properties里的日志配置覆盖2)、动态加载配置,在控制器里加入以下代码:defwebBaseDir=ServletContextHolder.servletContext.getRealPath('/')defclassdir=ApplicationHolder.application.isWarDeployed()?FilenameUtils.concat(webBaseDir,'WEB-INF/classes'):FilenameUtils.concat(webBaseDir,'..
5、/target/classes');defindex={forward(action:"reloadconfig")}defreloadconfig={//重新载入配置成功25/25defconfig=grailsApplication.configdefreload={deflocations=config.grails.config.locationslocations.each{if(it.startsWith('classpath:')){it=FilenameUtils.concat(classdir,it['classpath:'.le
6、ngth()..-1])it='file:'+it}if(FilenameUtils.isExtension(it,'properties')){//properties文件it=it.replace('file:','file:///')defpro=newProperties()defproFile=newFile(it)if(proFile.exists()){proFile.withInputStream{pro.loadit}config.merge(newConfigSlurper().parse(pro))}}else{//groov
7、y文件config.merge(newConfigSlurper().parse(newURL(it)))}}render"重新载入配置成功!${newDate()}"}defauth=config.control.authif(auth){//是否需要验证if(auth==params.auth){//验证成功reload()}else{//验证失败render'你无权做此操作!'}}else{reload()}}9、使用_Events.groovy把相关的配置在编译时就复制到指定的位置eventCompileStart={ant.copy(to
8、dir:"$classesDir/config",overwrite:true){fileset(dir:"config"
此文档下载收益归作者所有