mysql - Grails - 提取数据并显示它?

标签 mysql grails

我正在使用 Grails。我想从名为“User”的类的数据库中提取信息并简单地显示它。数据存储在 MySql 数据库中。我可以连接到它,我的应用程序也可以。

具有业务逻辑的 Controller “UserController”有一个名为“User”的操作。它看起来像这样:

import gorm.*


class UserController {
    static scaffold = true
    static defaultAction = "user"


    def index() {
       ...
    }

    def user() {
        try {

            def userToDisplay = User.get(1)
            return userToDisplay
        }
        catch (Exception e) {
            log.error("Something went wrong! ", e.message)
        }
    }
}

在我看来,GetUser 应该简单地获取 id 为 1 的用户(该用户确实存在于数据库中)。该用户的内容应显示在 View 中,也称为“用户”。它看起来像这样:

<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main"/>
    <title>User info</title>
</head>
<body>
    Last Name: ${User.lastName}<br/>
    First Name: ${User.firstName}<br/>
    E-mail: ${User.email}<br/><br/>
</body>
</html>

我不断收到一条错误消息,内容如下:

| Error 2014-01-27 13:04:07,089 [http-bio-8080-exec-10] ERROR
errors.GrailsExceptionResolver  - NullPointerException occurred when processing request:   
[GET] /TaskCheck/user
Cannot get property 'lastName' on null object. Stacktrace follows:
Message: Error processing GroovyPageView: Cannot get property 'lastName' on null object

换句话说,它一直认为应该从数据库中提取的“User”对象始终为空。我想不出任何我错过的代码。

你能告诉我我错过了什么吗?我错过了 UserController 中的一些代码吗?这本应该花费五分钟才能完成,但我花了比这更长的时间。谢谢。

最佳答案

正如评论中所指出的,您没有模型返回到您的 View 中。尝试类似的操作(并查看用户指南)。

def user() {
    def model = [:]
    try {

        model['user'] = User.get(1)
    }
    catch (Exception e) {
        log.error("Something went wrong! ", e.message)
    }

    render view: 'user', model: model
}

然后在您看来,您可以像这样访问您的模型:

${user.lastName}

关于mysql - Grails - 提取数据并显示它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21389108/

相关文章:

php - 在 bool 值上调用成员函数 bind_param()(MySQLi 未运行)

grails - Validate()返回false,但已保存在数据库中

validation - Grails项目中集成测试的Spock验证问题

grails - 使用参数查询关联的域对象给出错误 : Cannot query property "params" - no such property on class

mysql - #1054 - 'on clause' 中的未知列

mysql - 同表子查询优化

mysql - CURRENT_TIMESTAMP 以毫秒为单位

MySQL GROUP_CONCAT 排除组值

Grails 域和 @Canonical

grails - EJB从grails到glassfish的调用