有没有办法在Play Framework中将一个URL映射到另一个URL

时间:2015-11-20 17:52:21

标签: playframework

我正在使用Play Framework 2.4.3。我想更改路由文件中的一些网址,但事实证明这是一个包含一列网址的数据库表。 (向用户显示警报列表,每个警报都有指向警报适用页面的链接。)

我可能能够使用新的URL更新数据库中的数据,或者在运行时翻译它们,但我认为一个可能更容易的解决方案是以某种方式将旧URL映射到新URL。例如,我的路线文件如下所示:

#this is the new url
GET /views/producers/:partyId   controllers.ProducerController.viewProducer(partyId:Integer)

#this is the old url
GET /producer/view/:partyId     controllers.ProducerController.viewProducer(partyId:Integer)

在表格中,我的值如下所示:

  

/生产/视图/ 123

我可以通过在routes文件中保留两个条目来使其工作。反向路由将获取第一个,并且两个链接都有效。但我宁愿没有列出两次控制器功能(并冒险让它们失去同步),我也宁愿让用户在浏览器中看到相同的URL,无论他们是如何到达那里的。

有没有办法将旧网址映射到新网址?

1 个答案:

答案 0 :(得分:0)

在数据库中保存网址似乎不是一个好主意,但您可以将旧网址改为新网址:

#this is the new url
GET /views/producers/:partyId   controllers.ProducerController.viewProducer(partyId:Integer)

#this is the old url
GET /producer/view/:partyId     controllers.ProducerController.oldViewProducer(partyId:Integer)

oldViewProducer方法重定向到新路由的位置:

public static Result oldViewProducer(Integer partyId) {
    return redirect(routes.ProducerController.viewProducer(partyId));
}