ajax - Scala提升框架,提交多个值的ajax表单?

标签 ajax scala lift ajax-forms

我刚刚开始使用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 关联的函数。

谢谢!

最佳答案

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

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

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

您可以通过让 processEntryAdd() 返回 JsCmd 来添加客户端行为:
def processEntryAdd() {
    Log.info("processEntryAdd: " + firstName + ", " + lastName)
    JsRaw("alert('process entry added')")
}

关于ajax - Scala提升框架,提交多个值的ajax表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/760097/

相关文章:

scala - Scala 中的括号匹配 --- 函数式方法

Scala 将方法传递给 super 构造函数

电梯不是用 sbt build 的?

cakephp Controller 的 jquery getJSON() 响应为空,但 200 成功

ajax - 在 GWT 中右键单击?

java - 如何发送多个选项卡的公共(public)请求?

jquery - Azure API 管理中的 CORS 问题

scala - 使用 .toSet 制作的 Set 上的类型推断失败?

eclipse - 在 Eclipse 工作区中使用 Scalatra 应用程序? (即构建路径)

java - Tomcat 返回带有一字节响应的 HTTP 500