为什么在电梯mvc v2.3中重定向后不会出现S.notice

时间:2011-06-02 15:55:38

标签: session redirect lift

请求时:

case“page”:: AsInt(id):: Nil => {         S.notice(“Hello world!”)         S.redirectTo( “/索引”)     }

重定向到:

case“index”:: Nil => {       //用id“time”替换元素的内容和日期       “#time *”#> DependencyFactory.inject [日期] .MAP(_。的toString)     }

然而“Hello world!”没有出现。如果我评论redirectTo,它将显示在页面上。

有人能告诉我为什么会话没有超过重定向吗?

2 个答案:

答案 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!"))