请求时:
case“page”:: AsInt(id):: Nil => { S.notice(“Hello world!”) S.redirectTo( “/索引”) }
重定向到:
case“index”:: Nil => { //用id“time”替换元素的内容和日期 “#time *”#> DependencyFactory.inject [日期] .MAP(_。的toString) }
然而“Hello world!”没有出现。如果我评论redirectTo,它将显示在页面上。
有人能告诉我为什么会话没有超过重定向吗?
答案 0 :(得分:3)
我想这是因为 S.notice()将消息放在请求范围内,并且在重定向(创建新请求)后它不可用。
请参阅Exploring Lift书中的以下引语:
net.liftweb.http.S
对象表示当前请求的状态。您发送的邮件由
RequestVar
对象中的S
保留。
可是:
您还可以发送提升消息(通知,警告和错误) 将在重定向页面中呈现,以及在重定向上设置的cookie。同样,还有一个
S.redirectTo
的重载版本,允许您指定处理重定向时要执行的函数。
所以我认为您可以为此目的使用以下版本的 redirectTo 方法:
def redirectTo [T] (where: String, func: () ⇒ Unit) : T
并在注册函数(第二个参数)内调用 S.notice 。
最诚挚的问候, 弗拉基米尔
答案 1 :(得分:0)
试试这个......
S.redirectTo("/index", () => S.notice("Hello World!"))