grails - 无法登录Grails应用

标签 grails grails-domain-class grails-controller

我是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/

相关文章:

grails - chalice 应用程序启动时如何避免 quartz 启动

grails - 如何在grails中使用事件推送插件

grails - 具有Spring安全性的Grails 2:defaultFailureUrl不起作用

mysql - 如何在grails中获取多个选定的文件?

Grails编辑工作异常更新数据库的值分配

grails - 在Grails中全局使用 Controller

mysql - 如何将 mysql 或 mongodb 集成到 grails 3.2.10

rest - 一对多关系

Grails:如果更改影响域表的架构,如何更改插件域类?

ajax - 使用 <g :select remoteFunction> grails