0

我正在使用 lift 和 scala 创建一个示例网络应用程序。我的应用程序中有两个页面。第一个有一个表单,它从用户那里获取票证信息,点击提交时它会调用代码片段。我想在下一页显示我的表单值。我提到了 如何在使用 Lift 框架的代码段传递的 HTML 页面中获取参数的问题,但存在一些问题。到目前为止,我尝试了以下代码。 在我的第一页片段中:

class ticketDetailsResponse(
    var source:String="", 
    var destination:String="")

object BookFirstCityTrain {
     def render = {        
             val responseForm = new ticketDetailsResponse()              
             var from = ""
             var to = ""                 
            def process() {      
                            responseForm.source = from
                            responseForm.destination = to
                             S.redirectTo("ConfirmTicket.html",   () => showTicketDetails.ticketDetails(Full(responseForm)))
                         }
     "name=source" #> SHtml.text(from, from = _) &
     "name=destination" #> SHtml.text(to, to = _) &
     "type=submit" #> SHtml.onSubmitUnit(process)
 }
}

和我的第二页片段

object showTicketDetails {
   object ticketDetails extends RequestVar[Box[ticketDetailsResponse]](Empty)
 }

 class showTicketDetails {
    def render = "*" #> {
      showTicketDetails.ticketDetails.get.map { r =>
      "#fromStation" #> r.source
      "#toStation" #>r.destination
    }
  }
}

我从视图中引用了我的第二页片段,如下所示:

 <div data-lift="showTicketDetails" >     
        From: <span id="fromStation"></span><br />
        To: <span id="toStation"></span><br />
 </div>

但是当只有一个参数时它工作得很好。如果我在页面 () 中打印第二个参数,则第"#toStation" #>r.destination一个打印值正在消失。只有最后一个值在这里打印。我怎样才能打印这两个。任何人都可以为我回答。一些投入将是有价值的。谢谢!!!

4

1 回答 1

2

您必须使用该方法链接CSS 选择器。&

showTicketDetails.ticketDetails.get.map { r =>
  "#fromStation" #> r.source &
  "#toStation" #> r.destination
}

否则,您的代码块仅返回最后一个表达式并将第一个表达式丢弃为空操作。

于 2013-04-22T11:10:42.170 回答