- 浏览: 49931 次
- 性别:
- 来自: 北京
最新评论
-
Jcat:
如果使用唯一值数量来创建直方图,Oracle为每个值创建一个b ...
初步理解直方图 -
Jcat:
windows也是可以的,全部手动挡:安装JDK、Gradle ...
Mac上安装Grails3.0 -
vigiles:
不知道表单验证中的错误提示时如何通过properties文件配 ...
字符编码小研究 -
alanland:
~ ~ 讲的很详细啊
在Grails中使用Shiro安全框架 -
px96004:
佩服...我一直纳闷怎么没有 grails下的开源ERP呢?L ...
重拾Grails - 内部办公系统开发日记
文章列表
不小心弄出一个线程不安全的Service
class ExcelImpService extends AbstractExcelImporter {
ExcelImportService excelImportService
List<Map> imp(FileStore excelFileStore, Map config) {
String excelPath = excelFileStore.path
assert new File(excelPath).exists()
this.read(excelPath) ...
#1
--action里--
println(params.payAmount)
Expense e = new Expense(params)
println(e.payAmount)
--页面输入 10o (最后一位是字母option的开头)--
奇迹发生了,sout输出结果是
10o
10
最终导致存入数据库10
也不知道这个算是自动数据绑定的BUG还是容错机制。。。感觉好危险。。。
#2
背景
it.payDate是excel插件读取excel的日期,类型为org.joda.time.LocalDate
问题场景:在save前后验证
...
先checkout
cd projects
svn checkout http://xxxx.googlecode.com/svn/ myoa
然后创建grails项目,Grails自动生成的东西不少,我只把我编辑过的内容上传到了SVN
grails create-app myoa
这时create-app命令生成的文件会覆盖checkout出来的文件。从版本控制的角度,相当于有了未提交的新版本,这里用svn update是无法重新下载svn库里的版本的,而需要用svn revert
本地版本是100,库版本是101,用update
本地版本是102,库版本是101,需要用rever ...
应用中,Domain对象往往需要Status、Type属性,且一般就3-5条,各Domain之间也没什么共性,管理起来就非常麻烦。
Grails中,可以通过枚举类型轻松实现
1. 在src/groovy文件夹下创建枚举对象
public enum ExpenseGroupStatus {
New,
Approved,
WriteOff
}
public enum ExpenseGroupType {
Monthly,
BusinessTrip
}
注意,groovy类不支持内部类,所以无法放在Domain内部(就算可以,也不建议,太乱)
文件也可以放 ...
大多数g命令都是默认dev参数的
grails run-app 默认环境为 dev
grails war 默认环境为 prod
There are 3 preset environments known to Grails: dev, prod, and test for development, production and test.
源代码
public enum Environment {
/** The development environment */
DEVELOPMENT,
/** The production environment */
...
在Grails项目中,引入第三方包/框架(准确的说是G没有内置的第三方)有3个办法
1. 在plugin库里,选择可用的插件,比如ckeditor,好处是可以自动完成一些配置工作,使用起来很便捷。但要深入使用还需要了解框架的具体知识。
用过的plugin
1) ckeditor:富文本编辑器
2) excel-import:处理excel文件
3) joda-time:excel-import依赖之
2. 编辑BuildConfig.groovy文件
dependencies {
// specify dependencies here under either ...
其实很简单,不过好记性不如烂blog
1. 去官网下载
MySQL-server-5.5.29-1.rhel5.i386.rpm
MySQL-client-5.5.29-1.rhel5.i386.rpm
和大哥Oracle不同(server包含了client),小弟的server是server,client是client。
如果不安装client,连mysql(登录用)、mysqladmin(关闭用)命令都没有,所以都需要安装。
2. rpm安装,双击,一切都是自动完成,没有可配置的选项
安装完后:
1) 并没有一个所谓的安装路径,所有文件分散在系统中。。。(这点好不习惯。。,估计是希 ...
今天搞了一下Grails项目的部署,准确的说,部署操作和Grails无关,因为可以很方便的打成war包,就可以放在标准的Java容器里了。
步骤:
1. 用grails命令行或IDEA里直接点按钮,就可以打成war包。这里有个方便之处是,所有以plugin ...
今天做了个上传文件功能的雏形,发现上传后的文件(URI)不受Grails的过滤器控制,用户不登陆也可以访问到这些资源,这自然就不安全咯。
开始还以为是uri匹配的不对,后来查阅文档才明白,Grails的过滤器只对controller有效,对静态资源无能为力(包括网站的各种图标)
引用Static resources aren't served by a controller, so Grails filters (which are wrappers for Spring controller interceptors) won't fire for requests for them.
...
先摘录一段Java中两者的区别
1、拦截器是基于java的反射机制的,而过滤器是基于函数回调 。
2、过滤器依赖与servlet容器,而拦截器不依赖与servlet容器 。
3、拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用 。(这也就是为什么在Grails文档里,拦截器属于Controlloer章节的一个小节;而过滤器自己是一个章节)
4、拦截器可以访问action上下文、值栈里的对象,而过滤器不能 。
5、在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次 。
Grails的文档是这样描述的
If your intercepto ...
今天是一个小想法,引出一堆问题,一顿扫盲呀,基础很重要呀。这也印证了之前在论坛讨论Grails时我的观点:
引用grails不适合新手学习哦~
Grails是一个敏捷的MVC框架,更准确的说是以spring、hibernate为基础的一堆框架的集合。 ...
http://grails.org/plugin/ckeditor
Grails的插件系统让引入一个新框架需要做的工作简单到爆。
1. 在IDEA中右键点击Plugins(插件),就会列出可用的插件,打勾就安装成功。
2. 在GSP中加入
引用<head>
....
<ckeditor:resources/>
....
</head>
<body>
....
<form>
<ckeditor:editor name="myeditor" height="400px" width ...
开发环境版本号
GRAILS_HOME=/workspace/javaspace/grails-2.2.0
TOMCAT_HOME=/workspace/javaspace/apache-tomcat-7.0.34
JAVA_HOME=/workspace/javaspace/jdk1.7.0_10
开发环境重装流程
1. 安装IDEA
2. 安装JDK
3. 安装Grails,版本要和SVN上的版本一致
4. 在IDEA里创建一个空项目(相当于执行了grails create-app命令)
5. 运行grails install-templates命令(web.xml在这里)
6. 从SV ...