私は Lift を初めて使用するので、もっと詳しく調べて、Web 開発のメイン プラットフォームとして使用し始める必要があるかどうかを考えています。ただし、最初に払拭できれば幸いな「恐怖」はほとんどありません。
安全
フォームを生成する次のスニペットがあるとします。いくつかのフィールドがあり、ユーザーはそれらの一部だけを編集できます。
def form(in : NodeSeq): NodeSeq = {
val data = Data.get(...)
<lift:children>
Element 1: { textIf(data.el1, data.el1(_), isEditable("el1")) }<br />
Element 2: { textIf(data.el2, data.el2(_), isEditable("el2")) }<br />
Element 3: { textIf(data.el3, data.el3(_), isEditable("el3")) }<br />
{ button("Save", () => data.save) }
</lift:children>
}
def textIf(label: String, handler: String => Any, editable: Boolean): NodeSeq =
if (editable) text(label, handler) else Text(label)
isEditable
フィールドに割り当てられたメソッドが false と評価された場合でも、ユーザーがそのフィールドの値を変更できる脆弱性がないというのは正しいですか?
パフォーマンス
Lift でのフォーム処理の最適なアプローチは何ですか? 匿名関数をすべてのフィールドのハンドラーとして定義する方法が本当に気に入っていますが、どのようにスケーリングしますか? すべてのハンドラーに対して、関数がそのクロージャーと共にセッションに追加され、フォームがポストバックされるまでそこにとどまると思います。高負荷 (1 秒あたり 200 リクエストとしましょう) のサービスに関して、潜在的なパフォーマンスの問題が発生することはありませんか? また、これらのハンドラーはいつ解放されますか (フォームが再送信されず、ユーザーがブラウザーを閉じるか、別のページに移動した場合)?
ありがとうございました!