我是Grails的新手。
我正在尝试通过阅读《从新手到专业的普通知识和入门》一书来创建名为collab-todo的Web应用程序。
我正在使用动态脚手架功能,
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>
最佳答案
在您的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}" ... />
关于grails - 无法登录Grails应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21810223/