Hello其他程序员, 你可能从我以前的问题中知道我在Scala / Lift世界中是一个绝对的新手,因此我可能会问一些微不足道的问题,对不起:)
我想制作一个自定义登录表单来验证用户(用户不通过数据库进行身份验证,而是通过Google协议缓冲区通过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>
我希望抓取loginName
和loginPassword
字段值。实现这一目标的最佳方式是什么?
我尝试使用此类将其添加到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))
})
}
那么,有可能吗?我如何将这两件事连在一起?
答案 0 :(得分:1)
不是一个完整的答案,但希望是一个指示从哪里开始:
结帐this Ajax Form demo。相关的scala源代码为here,模板源为here。
这似乎与您尝试做的类似。他们将所有内容联系起来的方式是将{-1}}形式的字段包裹起来。然后在服务器端,<lift:snippet type="AjaxForm:show" form="post">
方法接受模板xml(它们使用show
作为参数类型,但我很确定你可以将它交换为Group
)并绑定字段到启用Ajax的字段。
请注意演示源中的NodeSeq
...坦率地说,我不喜欢这样做的演示,因为它很难理解方法的来源,对于Lift的新手来说。 import SHtml._
,untrustedSelect
,select
和submit
等方法来自该导入。
作为最后一点,我发现Lift's Google Groups page对于提升相关问题比SO更有帮助。我不是电梯大师,但那里有人。祝你好运!
答案 1 :(得分:0)
这是指向如何制作表单http://simply.liftweb.net/index-4.1.html#toc-Section-4.1
的网页的链接请注意虽然<div class="lift:LoginForm">code goes here</div>
内部不应该有div标签,但我更喜欢这个,因为它允许更多的控制。