1
我想运行示例Collab-Todo应用程序,如书中开始Groovy和Grails,页面号123(作者:克里斯托弗M.贾德,约瑟夫费萨尔Nusairat ,James Shingler Publication:Apress and Edition:2008)。这里是我的User.groovy文件:无法填充选择选项标签使用g:在Groovy中选择
package collab.todo
class User {
String userName
String firstName
String lastName
static hasMany = [todos: Todo, categories: Category]
static constraints = {
userName(blank:false,unique:true)
firstName(blank:false)
lastName(blank:false)
}
String toString() {
"$lastName, $firstName"
}
}
的UserController.groovy如下:
package collab.todo
class UserController {
def scaffold = User
def login = {
}
def handleLogin = {
def user = User.findByUserName(params.userName)
if (!user) {
flash.message = "User not found for userName: ${params.userName}"
redirect(action:'login')
}
session.user = user
redirect(controller:'todo')
}
def logout = {
if(session.user) {
session.user = null
redirect(action:'login')
}
}
}
我能够创建,读取,更新或删除用户表作为usual.Here是我的用户视图的示例屏幕截图: 在脚手架视图中,我试图使用user/login.gsp中的以下代码段在下拉列表中显示所有用户的列表(根据本书):
<g:select name='userName' from="${User?.list()}"
optionKey="userName" optionValue="userName"></g:select>
但是我得到的登录页面是一个下拉与填充任何值: 这里是登录页面的截图:
如果我改变
from="${User?.list()}"
到
from="${User.list()}"
我得到一个NullPointerException。因此,任何线索发生了什么?