无法登录Grails应用

时间:2014-02-16 10:57:06

标签: grails grails-domain-class grails-controller

我是Grails的新手。

我正在尝试创建名为collab-todo的Web应用程序,方法是阅读“从初学者到专业人士开始的groovy和grails”一书。 我正在使用动态脚手架功能,

class UserController {
   def scaffold = User
   def login = {}
}

在_topbar.gsp

<a href="/collab-todo/user/login">Login</a>

当我点击_topbar.gsp中的上述登录链接时,我收到错误,

java.lang.NullPointerException
Message:
Cannot invoke method list() on null object

我的loging.gsp正文,

 <body>
 <div class="body">
 <g:if test="${flash.message}">
 <div class="message">
 ${flash.message}
 </div>
 </g:if>
 <p>
 Welcome to Your ToDo List. Login below
 </p>
 <form action="handleLogin">

 <span class='nameClear'><label for="login">
 Sign In:
 </label>
 </span>
 <g:select name='userName' from="${User.list()}"
 optionKey="userName" optionValue="userName"></g:select>
 <br />
 <div class="buttons">
 <span class="button"><g:actionSubmit value="Login" />
 </span>
 </div>
 </form>
 </div>
 </body>

1 个答案:

答案 0 :(得分:2)

在您的GSP页面中,渲染器不知道User是什么。您有3个选择:

1)用户全班名(带包):

那是:

<g:select name='userName' from="${com.collabtodo.package.User.list()}" ... />

2)导入它:

<%@ page import="com.collabtodo.package.User"%>
...
<g:select name='userName' from="${User.list()}" ... />

3)在你的模特中有它:

import com.collabtodo.package.User
class TheController {
    def index() {
        [users: User.list()]
    }
}
GSP中的

<g:select name='userName' from="${users}" ... />
相关问题