0

在玩!模板我尝试访问一些模型,就像我在 JSP 中使用 bean 所做的那样,模板识别模型类但是当我尝试访问模型属性时,它抱怨错误:“MissingPropertyException:没有这样的属性”

在我的模板中:

${fulllyQualifyName.myModel} (未从控制器传递的模型)

页面输出:fulllyQualifyName.class

${fulllyQualifyName.myModel.propertyA} (尝试获取propertyA)

页面上的输出:MissingPropertyException:没有这样的属性:类的 propertyA:fulllyQualifyName.myModel 可能的解决方案:id,....

而且我确实将此 propertyA 设置为 myModel 中的属性。

我应该首先在模板中包含/导入模型类吗?如果是这样,我该怎么做?谢谢!

4

2 回答 2

1

如果您想访问视图中的模型,只需在控制器渲染方法中传递它们,即

render(model1,model2...)

那么你可以使用

${fullyQualifyName.model1.propertyA} 

${fullyQualifyName.model2.propertyB}

另见:http ://www.playframework.org/documentation/1.2/templates

于 2012-04-19T21:23:45.603 回答
0

实际上,您可以访问视图文件中的任何包。试试看嘛:

${models.ModelClassName.find('queryStr').fetch()}

通过这种方法,可以使用 Model 超类提供的所有 find() 方法,如http://www.playframework.org/documentation/1.2.5/jpa#finding中所述

例如,如果我想在不调用控制器渲染方法的情况下检索用户列表:

#{list items:models.User.findAll(), as:'user'}
    user name: ${user.name}
#{/list}

按 id 检索特定用户:

${models.User.findById(userId)}

...或通过它自己的财产:

${models.User.find('byEmail', 'john@gmail.com').first()}

如果您希望在多个地方使用检索到的模型,您可以尝试以下操作:

%{
  users = models.User.findAll();
}%

<span>there are ${users.size()} user(s) </span>
<ul>
  #{list items:users, as:'user'}
    <li>${user.name}</li>
  #{/list}
</ul>
...

我希望这会有所帮助。

于 2013-01-14T19:06:40.017 回答