我正在使用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,无论他们是如何到达那里的。
有没有办法将旧网址映射到新网址?
答案 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));
}