简短问题:我想使用类型化的bean作为grails中的模型而不是Map。这可能吗?
我想这样做:
def index = {
new Person(firstName:"foo", lastName:"bar", age:30)
}
而不是:
def index = {
[firstName:"foo", lastName:"bar", age:30]
}
长问题:我正在管理其他开发人员编写的控制器,而且很难理解模型中的所有可能条目。该模型填充了许多方法。我想重构控制器以返回一个自定义bean作为模型,但我希望gsp不需要更改。
我认为grails可以处理map或bean作为模型,但很快就意识到将bean传递给gsp会导致NullPointerExceptions无法找到属性。
我意识到我的控制器可以返回如下地图:
[model: myBean]
然后我需要通过gsp并将所有引用从$ {someProp}更改为$ {model.someProp}。
我也知道我可以使用反射将我的bean转换为Map,但我也不想这样做。
答案 0 :(得分:2)
请参阅render doc参考。您可以在示例中找到
// render a template to the response for the specified bean
def theShining = new Book(title: 'The Shining', author: 'Stephen King')
render(template: "book", bean: theShining)
答案 1 :(得分:1)
在你的控制器的末尾:(注意这将返回所有属性)
New Person().properties