简短的问题:我想在 grails 中使用类型化的 bean 作为模型而不是 Map。这可能吗?
我想这样做:
def index = {
new Person(firstName:"foo", lastName:"bar", age:30)
}
而不是这个:
def index = {
[firstName:"foo", lastName:"bar", age:30]
}
长问题:我正在维护一个由其他开发人员编写的控制器,很难理解模型中所有可能的条目。该模型通过多种方法填充。我想重构控制器以返回一个自定义 bean 作为模型,但我希望 gsp 不需要更改。
我假设 grails 可以将映射或 bean 作为模型处理,但很快意识到将 bean 传递给 gsp 会导致 NullPointerExceptions,因为找不到属性。
我意识到我的控制器可以返回如下地图:
[model: myBean]
但是我需要通过 gsp 并将所有引用从 ${someProp} 更改为 ${model.someProp}。
我也知道我可以使用反射将我的 bean 转换为 Map,但我也不希望这样做。