2012-10-24 73 views
1

你好同事, 你可能從我以前的問題中知道我是一個絕對的新手在斯卡拉/電梯世界,因此我可能會問一些微不足道的問題,對不起:)電梯(斯卡拉)自定義表格與片段

我很想做一個自定義登錄表單來驗證用戶(用戶沒有通過數據庫進行身份驗證,而是通過谷歌協議緩衝區的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)) 
    }) 

} 

那麼,是否有可能呢?我怎樣才能把這兩樣東西連接起來?

回答

1

不是一個完整的答案,但希望從哪裏開始的指針:

退房this Ajax Form demo。相關的scala源碼是here,模板源是here

這似乎與您要做的相似。他們將所有東西捆綁在一起的方式是包裝<lift:snippet type="AjaxForm:show" form="post">中的表單。然後在服務器端,show方法採用模板xml(它們使用Group作爲參數類型,但我敢肯定,您可以將其轉換爲NodeSeq)並將這些字段綁定到啓用了Ajax的字段。

請注意演示源文件中的import SHtml._ ......坦率地說,我不喜歡這樣做的演示,因爲它很難理解方法來自哪裏,對於Lift的新手來說。諸如untrustedSelect,select,submitajaxCall的方法來自該導入。

作爲最後一點,我發現Lift's Google Groups page對於Lift相關問題比SO更有幫助。我不是電梯大師,但那裏的人們。祝你好運!

+0

非常感謝 - 我會嘗試並在此處轉發我的結果是什麼;) – herom