0

劇中!テンプレートBeanを使用してJSPで行ったように、いくつかのモデルにアクセスしようとしました。テンプレートはモデルクラスを認識しますが、モデルプロパティにアクセスしようとすると、「MissingPropertyException:そのようなプロパティはありません」というエラーが表示されました。

私のテンプレートでは:

$ {fulllyQualifyName.myModel} (コントローラーから渡されないモデル)

ページの出力:fulllyQualifyName.class

$ {fulllyQualifyName.myModel.propertyA} (propertyAを取得してみてください)

ページの出力:MissingPropertyException:そのようなプロパティはありません:クラスのpropertyA:fulllyQualifyName.myModel考えられる解決策:id、...。

そして、このpropertyAをmyModelのプロパティとして設定しています。

最初にモデルクラスをテンプレートに含める/インポートする必要がありますか?もしそうなら、どうすればそれを行うことができますか?ありがとうございました!

4

2 に答える 2

1

ビューでモデルにアクセスしたい場合は、コントローラーの render メソッドに渡しただけです。

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()}

このメソッドにより、http: //www.playframework.org/documentation/1.2.5/jpa#finding で説明されているように、Model スーパークラスによって提供されるすべての find() メソッドを使用できます。

たとえば、コントローラーの render メソッドを呼び出さずに User のリストを取得する場合:

#{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 に答える