Grails 3.2.0.M1找不到名称的模板

时间:2016-11-05 14:35:55

标签: grails gson grails3

在我的域类 com.example.users.User 中,我添加了瞬态字段:

[05-Nov-2016 14:26:29 UTC] PHP Fatal error:  Allowed memory size of 262144 bytes exhausted (tried to allocate 989 bytes) in F:\SERVER\www\index.php on line 141

在我的gson视图中 user / _user.gson 我想渲染它:

class User implements Serializable {
    ...
    def carnets

    static transients = ['springSecurityService', 'carnets']
    ...
}

但我收到了:

  

引起:grails.views.ViewRenderException:呈现视图时出错:找不到名称/ carnet / index的模板

Carnet的观点gson文件是自动生成的,从CarnetController执行时效果很好。

我错过了什么?

2 个答案:

答案 0 :(得分:2)

在我的用例(Grails 3.3.0)中,我不得不更改模板路径: tmpl.'message/message' 至: tmpl.'/message/message' (添加前导斜杠)。

在开发中使用../语法,但在将WAR文件部署到Tomcat时导致错误。请参阅:[https://github.com/grails/grails-views/issues/140]

答案 1 :(得分:0)

不幸的是,您需要使用当前.gson文件中模板的相对路径。我想这个选项是来自views文件夹的相对路径,但显然不是这样。

假设您的views文件夹结构如下:

views/
    carnet/
         _index.gson
    user/
        _user.gson

在这种情况下,您的_user.gson文件需要如下:

import com.example.users.User

model {
    User user
}

json g.render(user, [excludes:['password', 'deleted', 'enabled', 'accountExpired', 'accountLocked', 'passwordExpired', 'authorities']]) {
    "carnets" tmpl.'../carnet/index'(user.carnets)
}

TL; DR将tmpl.'/carnet/index'更改为tmpl.'../carnet/index'。 :)