2012-04-19 10 views
0

再生中!テンプレート私はいくつかのモデルにアクセスしようとしましたが、テンプレートでモデルクラスを認識しようとしましたが、「MissingPropertyException:No such such property」というエラーメッセージが表示されます。Playテンプレートのページスコープを超えてモデルにアクセスするにはどうすればいいですか?フレームワーク?

テンプレート:

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

出力:fulllyQualifyName.class

$ {fulllyQualifyName.myModel.propertyAは}(取得しようページのpropertyA)

出力:MissingPropertyException:いいえ、そのようなプロパティ:クラスのpropertyA:fulllyQualifyName.myModel可能な解決策:ID、...

そして、私はこのpropertyAがmymodelという中でプロパティとして設定されています。

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

+0

これは静的なプロパティですか? –

+0

静的プロパティではありません。私の質問はこのスレッドのようですが、私はPlay 1.2.4を使用しています:http://stackoverflow.com/questions/8316827/play-2-0-framework-external-model-in-template/8693533#8693533 – user1286771

答えて

1

はちょうどコントローラでそれらを渡さ

render(model1,model2...) 

すなわちrenderメソッドを、あなたは見るも

${fullyQualifyName.model1.propertyA} 

${fullyQualifyName.model2.propertyB} 

を使用することができます。http://www.playframework.org/documentation/1.2/templates

+0

ありがとうこの場合、私はrenderJSON(何か)を使用するので、別のインスタンスを渡す方法はわかりません。何か案が?ありがとうございました。 – user1286771

+0

jsonを渡してプレイテンプレートを使用している理由 –

+0

テンプレートのjavascriptはjson出力を利用していますが、モデルから他の情報も表示する必要があります。ありがとう – user1286771

0

実際に、あなたをビューファイル内のすべてのパッケージにアクセスできます。ただ、試してみてください。たとえばhttp://www.playframework.org/documentation/1.2.5/jpa#finding

で説明したように、私はのリストを取得する場合

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

をこの方法により、一つは、モデルのスーパークラスが提供するのfind()メソッドのすべてを使用することができます

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

idで特定のユーザーを取得するには:コントローラを呼び出すことなく、ユーザーは、renderメソッドを

${models.User.findById(userId)} 

は...または、独自のプロパティで:あなたが複数の場所で検索されたモデルを使用したい場合は

${models.User.find('byEmail', '[email protected]').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> 
... 

を、私は、これは助けを願って。

関連する問題