1

各位程序员,您好,您可能从我之前的问题中知道,我是 Scala/Lift 领域的绝对新手,因此我可能会问一些琐碎的问题,对此感到抱歉:)

我很想制作一个自定义登录表单来验证用户身份(用户没有通过数据库进行身份验证,而是通过谷歌协议缓冲区的 API 调用),所以我需要做的就是获取输入并将它们发送到API。

到目前为止,我想出了我的login.html页面:

<div id="loginContainer" class="loginMainContainer centerContainer">
      <div class="loginInputWrapper">
        <input type="text" name="loginName" id="loginName" class="txtLogin" />
      </div>
      <div class="loginInputWrapper">
        <input type="password" name="loginPassword" id="loginPassword" class="pwLogin" />
      </div>
      <div class="buttonWrapper loginButtonWrapper">
        <button type="submit" class="hiddenButton qsbfont">Login</button>
      </div>
    </div>

我想掌握loginNameloginPassword字段值。实现这一目标的(最佳)方法是什么?

我试图用这个类来获取它并将它添加到snippet包中,但我不知道如何将这两者连接在一起。这是我的片段:

object MyAuthentication {
  def authentication(name: String, password: String) = {

    def validate(user: String, password: String): Boolean = {
      if(user == "tac" && password == "tac") true else false
    }

    def createUser(loggedIn: Boolean): Boolean = {
      if (loggedIn) {
        val user = new MyUser
        user.setName(name)
        user.setUID(1111)
        user.setLoginState(loggedIn)
        user.setLanguage("en_EN")
      }
      loggedIn
    }

    if (createUser(validate(name, password)))
      <span>loggedIn</span>
    else
      <span>failure!</span>

  }

  def render = SHtml.onSubmitList(credentials => {
    authentication(credentials(0), credentials(1))
  })

}

那么,这样可能吗?我怎样才能将这两个东西连接在一起?

4

2 回答 2

1

不是一个完整的答案,但希望是从哪里开始的指针:

查看此 Ajax 表单演示。相关的 scala 源代码在这里,模板源代码在这里

这似乎与您尝试做的类似。他们捆绑一切的方式是将what-would-be-the-form 的字段包装在一个<lift:snippet type="AjaxForm:show" form="post">. 然后在服务器端,该show方法采用模板 xml(它们Group用作参数类型,但我很确定您可以将其交换为 for NodeSeq)并将字段绑定到启用 Ajax 的字段。

请注意import SHtml._演示源中的...坦率地说,我不喜欢演示这样做,因为对于 Lift 的新手来说,很难理解方法的来源。untrustedSelect, select,submit和等方法ajaxCall来自该导入。

最后一点,对于 Lift 相关的问题,我发现Lift 的 Google Groups 页面比 SO 更有帮助。我不是电梯大师,但那里的人。祝你好运!

于 2012-10-24T11:42:07.100 回答
0

这是一个关于如何制作表格的页面的链接http://simply.liftweb.net/index-4.1.html#toc-Section-4.1

需要注意的是,虽然 a 内不应该有 div 标签,但<div class="lift:LoginForm">code goes here</div>我更喜欢这个,因为它允许更多控制。

于 2013-01-04T08:24:32.380 回答