以下行动:
def addMembers(){
Map result = [message:"successful"]
try {
def group = Group.get(params.id)
def json = request.JSON
def users = json.users.collect{Usr.get(it.id)}
result.members = groupService.addMembers(group,users)
}catch(Exception e){
message = "Exception $e"
result.message = message
response.setStatus(hsr.SC_METHOD_NOT_ALLOWED)
}
respond result, [model:[result:result]]
}//eo addMember
与以下addMembers.gson文件结合使用
model {
Map result
}
json{
message result.message
members g.render(template:"simpleMember", collection: result.members, var:'member')
}
获取空指针异常: java.lang.NullPointerException:无法在null对象上获取属性“message”
我在其他行动中工作得很好,我会回复域对象,但如果我捕获异常,客户端需要一条消息,而且当[message:“”成员创建任意pogo时似乎真的不值得。 :[]]可以完成与任意额外文件和额外5-10行代码相同的工作量。
更新1 我尝试使用任意ResultHolder类替换Map,以安抚可能正在进行的任何严格键入。
这没有帮助
更新2 在我的.gson文件中,我替换了
json{
与
json g.render(result){
这使我得到空输出而不是空指针。
同样不可接受。
更新3 为了尝试评估如何与gson模板交互而不依赖于ajax帖子和数据库交互,我做了以下任意操作:
def jsonDbug(){
def result = [message:"hi"]
respond result, [model:[jsonDbug:result]]
}
和一个任意的gson文件:
model{
Map jsonDebug
}
json{
says jsonDebug.message
}
这使我可以更快地进行更改以查看出现了什么问题。 我正在尝试以其他方式打电话,除了现在回复,但没有任何作用。
就好像JSON视图严格用于域对象而不是其他任何内容。
答案 0 :(得分:3)
事实证明,当我开始时,我并不是那么遥远。 问题是:
respond result, [model:[result:result]]
http://views.grails.org/latest/
使用的主要示例当我改为:
render(view:"addMembers", model:[result:result])
它完全符合我的要求。