我是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>
答案 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}" ... />