将参数从片段传递到提升框架中的下一页

时间:2013-04-22 11:04:15

标签: html scala web-applications sbt lift

我使用lift和scala创建一个示例Web app.i在我的应用程序中有两个页面。第一个表单有一个表格,它从用户那里获取票证信息,点击提交时会调用该片段。我想将表单值显示到下一页。我提到了这个问题 How to get parameters in an HTML page passed from a snippet with Lift framework但是有些问题。到目前为止我尝试了以下代码。 在我的第一页代码段

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),则第一个打印值正在消失。这里只打印最后一个值。我怎么能打印这两个。任何人都可以回答我。一些投入将是有价值的。感谢!!!

1 个答案:

答案 0 :(得分:2)

您必须使用&方法链接CSS selectors

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

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