无法在加载的模板中访问域类方法

时间:2015-04-15 14:41:46

标签: grails gsp

我使用的是Grails 1.3.8(旧的但是金色)。在我看来,我使用与包含视图相同的变量渲染模板:

<g:render template="areaInfoTemplate" model="${pageScope.variables}"/>

除非我尝试访问模板

中的域类上的方法,否则此方法无效
<g:if test="${currentState == State.findByName('foobar')}">...</g:if>

导致:

Exception Message: Cannot invoke method findByName() on null object 

如果我在主视图中访问State gsp一切正常。

我的域名是:

class State {
    String name
    String value

    static constraints = {
        name(nullable:false,blank:false,size:0..255)
        value(nullable:false,blank:false,size:0..255)
    }
}

2 个答案:

答案 0 :(得分:1)

Grails不是PHP - 请不要从视图层进行数据库调用(除非你喜欢打击人为的,自我造成的可扩展性问题)。只需在控制器或服务中进行调用,然后将数据传递给要呈现的视图。 GSP应该只负责渲染输出,而不是数据库访问等更高级别的问题。

答案 1 :(得分:0)

我忘了在文件的开头添加一个import语句:

<%@ page import="my.wonderful.package.State"%>