要するに、Liftのデザインはロジックとデザインを厳密に分離しているため、テンプレートマークアップで一般化されたタグの使用を禁じています。
リフトでの反復処理の仕組みを確認するには、view first articleをご覧ください。
記事からの例:あなたのマークアップ:
<table>
<lift:show.users>
<tr>
<td><f:first_name>David</f:first_name></td>
<td><f:last_name>Pollak</f:last_name></td>
</tr>
</lift:show.users>
</table>
あなたのコード:今すぐ
class Show {
def users(xhtml: NodeSeq): NodeSeq =
Users.findAll.flatMap(user =>
bind("f", xhtml,
"first_name" -> user.firstName,
"last_name" -> user.nameName
)
)
}
、それはタグ<lift:show.users>
は、タグの内容と対応するメソッドを呼び出している見たときに何をするかリフト議論として。タグは、users
メソッドの戻り値に置き換えられます。
users
メソッドはすべてUsers
の繰り返し処理を行い、各ユーザーはbind
の最初の名前と2番目の名前の値をxhtml
にします。それらの反復はすべて連結され(flatMap
を介して)返されます。
私が持ち上げを開始したとき、私はいつもこのアプローチがやや硬すぎると感じました。ここに小さなループがあり、どうやって傷つけることができますか?しかし今では、とをテンプレートコードから独自のスニペットを作成するのがどれほど簡単か分かりました.JSPのようなものをもう使用することは想像できません。それは比較では弱く、マークアップを混乱させる。もちろん、Scalaの検証能力の大部分を失います。
注:
テンプレートタグは、コンテンツで満たされている理由は、目的を設計するためです。この場合、ダミーのタグと値はbind
の間に置き換えられます。したがって、テンプレート設計者は、多かれ少なかれ意味のあるコンテンツをタグに埋め込むことができ、コーダが設計者が念頭に置いたセマンティクスをよりよく理解できるようになります。
説明と簡単な返信をありがとう。 :) – ksemeks
「David」と「Pollack」はなぜそこにありますか? –
これはLift wikiからコピーされているためです。 – Debilski