Goodtiger さんのプロフィール怅望千秋一洒泪フォトブログリストその他 ![]() | ヘルプ |
Grails Acegi plugin的小问题可以参看官方的这篇文章来了解grails的acegi插件,也可以参看infoQ上的这篇文章。 通过Grails Acegi插件,就可以非常轻松的给应用程序提供authentication和authorization的功能。但是在创建的RegisterController中却有一个错误,会导致在注册的时候产生如下错误: HTTP ERROR: 404 RegisterController中相关的代码是 def parMap =['j_username':person.username,'j_password':params.passwd, 问题就出在这个redirect的方法上,显然不是login controller来处理j_acegi_security_check,所以把这段代码改为: redirect(uri:"/j_acegi_security_check?j_username=${person.username}&j_password=${params.passwd}") 这样就可以了,注意一定要用双引号而不是单引号。 MySQL乱码问题今天在用Grails的时候,表单上填写中文,然后提交,就报错。然后检查了下,发现是数据库的varchar字段都不是用unicode来整理的。然后删除了数据库重建,并指定好编码。 很多MySQL的乱码问题并不来源于程序,而是我们对数据库的编码没有设置好。一般在安装的时候,如果选择默认的编码为unicode的话,那么以后创建数据库的时候,直接使用create database xxx,就可以了。但是如果安装的时候忽略了怎么办?那就在创建数据库的时候,这么写:CREATE DATABASE xxx DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci。如果使用phpmyadmin工具来对数据库进行管理的话,在创建的时候,就可以指定编码。 至于很多人经常会说是JDBC导致了乱码问题,提倡jdbc:mysql://localhost/xxx?useUnicode=true&characterEncoding=utf8来表示url。其实大可不必。Mysql的jdbc会读取数据库的编码,然后往Unicode转,4.1开始就直接支持unicode了。 所以简单的说,数据库,表,字段和页面或文本的编码要统一起来。 [Grails]java.lang.NoClassDefFoundError: org/codehaus/groovy/tools/LoaderConfiguration之前用的是grails-1.0-RC3和Groovy1.5.1,看到Grails终于final了,fix了很多的bug,就来更新下好了,下载了grails-1.0.1和Groovy1.5.4的压缩包,解压好之后,更新了GROOVY_HOME和GRAILS_HOME的环境变量的值。 但是在命令行输入grails -version查看的时候,缺报错了,java.lang.NoClassDefFoundError: org/codehaus/groovy/tools/LoaderConfiguration。网上查了下,好像是从grails RC3的时候就有人提交的一个bug,但是到现在状态还是open的,可以看这里。 我重新把GRAILS_HOME的值改为grails-1.0-RC3的目录,再次在命令行输入grails -version,没有问题。很诡异,原本RC3的bug我没有遇到,但是final之后再一个bug fix的版本,就重现了这个bug。添加相关的jar到classpath也没有解决。 重新下载了grails-1.0.1的installer,安装之后,发现目录结构和压缩包有点不一样,就是在grails目录外多加了一个bin目录,里面有Grails Environment的快捷方式来运行bin目录下的console.bat。再次输入grails -version,没有问题。 唉~~~ Grails构建简单的书籍管理应用首先,在一个空白目录下,输入grails create-app ebms 。稍后,我们可以看到一个名为ebms的目录,grails建立的是一个标准的目录结构,如果您觉得这个目录结构限制了您,并且只有精心设计自己的定制目录树才能使用一个框架,那么这样使用Grails便没有多大的乐趣。 进入ebms目录,并输入grails create-domain-class Book。 生成两个文件,Book.groovy和BookTest.groovy。使用emacs打开Book.groovy,可以看到文件内容为: class Book { } 可以看到没有什么内容,然后我们给Book添加一些字段,如下 class Book { 输入grails generate-all Book,以构建grails-app/controllers/BookController.groovy,并在 grails-app/views/Book中生成一组匹配的 Groovy Server Page(GSP) 在BookController类中生成了一堆代码,当然也可以全部删去,替换为一句def scaffold = Trip
Hello Grails!(NetBeans 6.1 M1支持Groovy和Grails)原文参见:Brian Leonard's Blog,有改动 NetBeans 6.1 M1刚刚发布,这次发布的版本上开始支持Groovy语言和Grails框架,但是毕竟是M1,所以支持还是有限的,我们可以从任务列表种可以看到,还有很多的工作正在进行之中。(参见http://wiki.netbeans.org/Groovygrails)任务列表一共有6大类将近60个任务,现在大约是完成了最基本的特性,比如语法高亮、代码格式化、关键字的代码自动完成等等。看来我们要看到netbeans像支持ROR一样支持的很好,还需要一段时间的等待。 搭建环境不像Rails一样,Netbeans并没有集成Groovy和Grails进来,需要我们自己安装,但是这并不麻烦。
创建Grails项目1、选择File > New Project 来创建一个名为GroovyWebLog的Grails 应用。
创建Domail classes
创建Controller
注意, 如果controller和domain class的名称一样,我们应当设置scaffolding = true。作者没有把名称一样的话,是作者想和他在Rails下的做法统一。 运行应用
3.点击BlogController链接
4.创建New Post
点击ID,我们可以看到Post的详细内容 再添加一个field1.编辑Post.groovy ,增加一个 body field: class Post {
String title
String body
}
2.返回浏览器,你可能会遇到一个错误,这是因为缺省情况下,Grails是每次有改动的时候就drop和create数据库。
数据库配置
HSQLDB
验证输入
1.打开Post.groovy ,添加下面的代码: class Post {
String title
String body
static constraints = {
title(blank:false)
body(blank:false)
}
}
2.当试图没有填写数据就提交的时候就会出现如下的错误
自定义View
上面都是dynamic scaffolding.。现在我们来产生我们的controller和view的代码。但是到现在的版本中,我们还没有找到菜单的选项,所以我们还得从命令行着手。(期望在Netbeans的更新版本种会有更好的支持)
完整的应用 |
|
|