Grails View 认为模型为空
Grails View thinks model is null
我有一个 Grails 3 应用程序,我正在尝试使用视图将我的控制器的输出编组为特定格式。我添加了两个视图:1. 在 views/order/getOrderLines.gson
下绑定到控制器操作的模型和 2. 单个 orderLines 的模板 views/order/_orderLines.gson
但是我的输出返回为一个空对象。这真的很难弄清楚。以下是我的观点:
views/order/getOrderLines.gson
model {
List<OrderLine> orderLinesList
}
json tmpl.orderLines(orderLinesList)
views/order/_orderLine.gson
model {
OrderLine orderLine
}
json {
id orderLine.id
description orderLine.description
...
}
但是我在 orderLine
上得到了 NullPointerException
,就好像 OrderController
没有返回 List<OrderLine>
。当我删除这些视图时,输出 returns 正如预期的那样,尽管它没有按照我希望的方式编组。
最奇怪的事情:这适用于我的大多数其他观点。我在 Grails Views' documentation 找到了很多很棒的文档,但似乎没有任何内容可以解决这个奇怪的错误。
如果您的模板名称是 _orderLines.gson
,您应该将 _orderLines.gson
中的模型变量从 orderLine
重命名为 orderLines
。
因此您的 _orderLines.gson
模板将如下所示
model {
OrderLine orderLines
}
json {
id orderLines.id
description orderLines.description
...
}
如http://grails.github.io/grails-views/latest/#_templates所说
The name of the model variable is the same as the template name.
因此,您的模型变量应该是 orderLines
(与模板名称相同)而不是 orderLine
使用模板的正确方法应该是这样的:
文件_orderLine.gson
import com.example.OrderLine
model{
OrderLine orderLine
}
json{
id orderLine.id
description orderLine.description
...
}
文件getOrderLines.gson
import com.example.OrderLine
model{
Iterable<OrderLine> orderLineList
}
json tmpl.orderLine(orderLineList ?: [])
注意单数 orderLineList
而不是 orderLinesList
,与变量名相同 orderLine
而不是 orderLines
正如sct999
所说,模型变量的名称与使用的模板名称相同。但这只是默认情况。你甚至可以这么明确:
g.render(template:'<path to template>', collection: <your collection>, var: '<target variable>')
我有一个 Grails 3 应用程序,我正在尝试使用视图将我的控制器的输出编组为特定格式。我添加了两个视图:1. 在 views/order/getOrderLines.gson
下绑定到控制器操作的模型和 2. 单个 orderLines 的模板 views/order/_orderLines.gson
但是我的输出返回为一个空对象。这真的很难弄清楚。以下是我的观点:
views/order/getOrderLines.gson
model {
List<OrderLine> orderLinesList
}
json tmpl.orderLines(orderLinesList)
views/order/_orderLine.gson
model {
OrderLine orderLine
}
json {
id orderLine.id
description orderLine.description
...
}
但是我在 orderLine
上得到了 NullPointerException
,就好像 OrderController
没有返回 List<OrderLine>
。当我删除这些视图时,输出 returns 正如预期的那样,尽管它没有按照我希望的方式编组。
最奇怪的事情:这适用于我的大多数其他观点。我在 Grails Views' documentation 找到了很多很棒的文档,但似乎没有任何内容可以解决这个奇怪的错误。
如果您的模板名称是 _orderLines.gson
,您应该将 _orderLines.gson
中的模型变量从 orderLine
重命名为 orderLines
。
因此您的 _orderLines.gson
模板将如下所示
model {
OrderLine orderLines
}
json {
id orderLines.id
description orderLines.description
...
}
如http://grails.github.io/grails-views/latest/#_templates所说
The name of the model variable is the same as the template name.
因此,您的模型变量应该是 orderLines
(与模板名称相同)而不是 orderLine
使用模板的正确方法应该是这样的:
文件_orderLine.gson
import com.example.OrderLine
model{
OrderLine orderLine
}
json{
id orderLine.id
description orderLine.description
...
}
文件getOrderLines.gson
import com.example.OrderLine
model{
Iterable<OrderLine> orderLineList
}
json tmpl.orderLine(orderLineList ?: [])
注意单数 orderLineList
而不是 orderLinesList
,与变量名相同 orderLine
而不是 orderLines
正如sct999
所说,模型变量的名称与使用的模板名称相同。但这只是默认情况。你甚至可以这么明确:
g.render(template:'<path to template>', collection: <your collection>, var: '<target variable>')