2014-01-27 54 views
0

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

具有业务逻辑的控制器“UserController”具有称为“用户”的操作。它看起来像这样:

​​

在我的脑海里,应该的getUser简单地得到用户为1的ID(它在数据库中存在)。该用户的内容应显示在视图中,也称为“用户”。它看起来像这样:

<!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 

换句话说,它总是在认为该“用户”对象,应该已经拉表单数据库始终为空。我想不出任何我错过的代码。

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

+2

您拥有MVC的C和V,M缺失。 :)看看['render'](http://grails.org/doc/latest/ref/Controllers/render.html) – dmahapatro

回答

1

正如在评论中指出的那样,没有模型返回到您的视图。尝试这样的事情(也可以看看用户指南)。

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} 
0

谢谢dmahapatro &约书亚·摩尔。

使用“渲染”,使用视图和模型将模型返回到视图。你们俩都是对的。我的回答是:

class UserController 
{ 
static defaultAction = "user" 

... 

def user() 
{ 
    try 
    { 

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

} 

我一直试图做一个return语句,就像我会用在所有其他语言。

我需要更加努力地摆脱我的.Net习惯。

+0

只需FYI BobaFett就可以做到。你只需要将它作为一个映射返回:'return [User:userToDisplay]' – Kelly

相关问题