리프트 net.liftweb.http.S#param은 위키에서 말한 것처럼 작동하지 않습니다.

StackOverflow https://stackoverflow.com/questions/1178237

  •  19-09-2019
  •  | 
  •  

문제

위키에 있는 예제를 복사하려고 합니다.http://wiki.liftweb.net/index.php/Hello_Darwin

HelloForm2.scala의 예에서

"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("")
    )
  }
}

이제 렌더링된 페이지에서는 올바르게 표시되지만 콘솔은 여전히 ​​인쇄됩니다.value:hogehoge :: Empty

저는 리프트 1.0을 사용하고 있어요

감사해요.

도움이 되었습니까?

해결책

위키 페이지의 예에 표시된 대로 해당 코드도 변경해야 합니다. 여기에 복사하겠습니다.

  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는 매우 다르게 정의됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top