我使用的是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)
}
}
答案 0 :(得分:1)
Grails不是PHP - 请不要从视图层进行数据库调用(除非你喜欢打击人为的,自我造成的可扩展性问题)。只需在控制器或服务中进行调用,然后将数据传递给要呈现的视图。 GSP应该只负责渲染输出,而不是数据库访问等更高级别的问题。
答案 1 :(得分:0)
我忘了在文件的开头添加一个import语句:
<%@ page import="my.wonderful.package.State"%>