2009-07-24 51 views
1

我嘗試HelloForm2.scala電梯net.liftweb.http.S#PARAM犯規就像維基說:

的例子複製的維基 http://wiki.liftweb.net/index.php/Hello_Darwin

例子

"submit" -> submit(?("Send"),() => {println("value:" + who + " :: " + param("whoField"))}), 

它總是打印

value:Full(hogehoge) :: Empty" even if i set the who as "object who extends RequestVar(Full("world")) 

我做錯了什麼?

對於忘記發佈完整代碼感到抱歉,我已經嘗試下面的維基中的第二個代碼。 的index.html

<lift:surround with="default" at="content"> 
<h2>Welcome to your project!</h2> 
<lift:HelloWorld.show form="POST"> 
    Hello <hello:who /> 
    <br /> 
    <label for="whoField">Who :</label> 
    <hello:whoField /> 
    <hello:submit /> 
</lift:HelloWorld.show> 
</lift:surround> 

和HelloWorld.scala

class HelloWorld { 
    object who extends RequestVar(Full("world")); 
    def show(xhtml: NodeSeq): NodeSeq ={ 
    bind("hello", xhtml, 
     "whoField" -> text(who.openOr(""), v => who(Full(v))) % ("size" -> "10") % ("id" -> "whoField"), 
     "submit" -> submit(?("Send"),() => {println("value:" + who.openOr("") + " :: " + param("whoField"))}), 
     "who" -> who.openOr("") 
    ) 
    } 
} 

現在,誰顯示在所呈現的頁面是正確的,但仍然控制檯使用電梯1.0

打印 value:hogehoge :: Empty

IM

謝謝。

回答

1

你必須改變這種代碼太,如圖中的例子wiki頁面,我會在這裏複製:

bind("hello", xhtml, 
     "whoField" -> text(who.openOr(""), v => who(Full(v))) % ("size" -> "10") % ("id" -> "whoField"), 
     "submit" -> submit(?("Send"),() => {println("value:" + who.openOr("") + " :: " + param("whoField"))}), 
     "who" -> who.openOr("") 
) 

注意whoField定義非常不同。

+0

謝謝,我忘了發佈完整的代碼。 是的,我認爲它已經和你說的一樣了。 如果我沒有使用lift方式,並讓textfield有「whoFiled」這個名字,那麼param(「whoField」)很好地顯示。但在wiki頁面中使用liftway,然後它會自動生成textfield的名稱,並且param始終在我的代碼中顯示Empty。 – 2009-07-24 23:41:52