我是 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
分配给该字段的方法评估为假,也没有漏洞允许用户更改某个字段的值?
表现
在 Lift 中进行表单处理的最佳方法是什么?我真的很喜欢将匿名函数定义为每个字段的处理程序的方式 - 但是它如何扩展?我猜想对于每个处理程序,都会将一个函数及其闭包添加到会话中,并且它会一直保留在那里,直到表单被发回。当涉及到高负载下的服务(比如说每秒 200 个请求)时,它不会引入一些潜在的性能问题吗?这些处理程序什么时候被释放(如果没有重新提交表单并且用户关闭浏览器或导航到另一个页面)?
谢谢!