【问题标题】:Scala lift framework, ajax form that submits multiple values?Scala提升框架,提交多个值的ajax表单?
【发布时间】:2010-10-20 02:15:03
【问题描述】:

我刚刚开始使用 lift,我现在正尝试将普通表单更改为 ajax 表单,但从未调用方法 processEntryAdd

def addUser(xhtml : Group) : NodeSeq = {

    var firstName = ""
    var lastName = ""

    def processEntryAdd() {
        Log.info("processEntryAdd: " + firstName + ", " + lastName)
    }

    SHtml.ajaxForm(
        bind("entry", xhtml,
             "firstName" -> SHtml.text(firstName, 
                 (x) => {
                     Log.info("Setting firstName to " + x); 
                     firstName = x
                 }),
             "lastName" -> SHtml.text(lastName, 
                 (x) => {
                     Log.info("Setting lastName to " + x); 
                     lastName = x
                 }),
             "submit" -> SHtml.submit("Add user", processEntryAdd),
        ))
}

知道如何实现我想要做的事情,或者为什么上面的代码不起作用。 按下按钮时会提交两个表单字段的值,并设置两个局部变量firstNamelastName,但不调用与 SHtml.submit 关联的函数。

谢谢!

【问题讨论】:

    标签: ajax scala lift ajax-forms


    【解决方案1】:

    这个问题有点老了,但我最近需要自己知道这个问题,这是迄今为止我见过的最好的解决方案:

    ajaxForm(
        bind("entry", xhtml,
             "firstName" -> text(firstName, firstName = _),
             "lastName" -> text(lastName, lastName = _),
             "submit" -> submit("Add user", processEntryAdd _),
        ) ++ hidden(processEntryAdd _)
    )
    

    通过将处理添加到隐藏的表单元素,您可以保留提交按钮,而无需更改任何视图代码。

    您可以通过让 processEntryAdd() 返回 JsCmd 来添加客户端行为:

    def processEntryAdd() {
        Log.info("processEntryAdd: " + firstName + ", " + lastName)
        JsRaw("alert('process entry added')")
    }
    

    【讨论】:

    • 谢谢,这看起来是一个简单的解决方案,很快就会尝试。
    • 在最后的sn-p中,应该有一个=,防止processEntryAdd自动变成Unit
    【解决方案2】:

    在回答这个问题时,David Pollak 建议使用

    "提交" -> SHtml.hidden("添加用户", processEntryAdd) ++

    在电梯邮件列表中。

    【讨论】:

    • 这行得通,但不幸的是并不能解决整个问题。我仍然缺少的部分难题是在 ajax 响应后重新渲染页面的一部分。
    【解决方案3】:

    这是答案,滚动到底部,(忽略

    http://www.assembla.com/wiki/show/liftweb/ajaxForm

    “提交”-> (SHtml.hidden(auth) ++ )

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-19
      • 2014-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-10
      • 2017-12-16
      • 2015-12-21
      相关资源
      最近更新 更多