使用多个参数播放框架路由

时间:2011-07-13 00:31:28

标签: playframework

我正在尝试在Play中设置SEO友好路线!具有多个参数的框架(第二个参数是可选的)。我的目标是:

http://domain.com/article/jsmith/name-of-article

但Play正在产生的是:

http://domain.com/article/jsmith?articleSlug=name-of-article

在我看来: @{Article.show("jsmith","name-of-article")}

我的控制器
public static void show(String username,String articleSlug){ ... }

我的路线文件

GET /article/{username}                  Article.show
GET /article/{username}/{articleSlug}    Article.show

2 个答案:

答案 0 :(得分:3)

似乎您的模板与第一条路线匹配。撤销订单就行了,

GET /article/{username}/{articleSlug}    Article.show
GET /article/{username}                  Article.show

还让您的控制器接受用户名和articleSlug。

show(username, articleSlug){}

答案 1 :(得分:0)

我使用以下映射实现了您的目标:

路线:

GET     /{<[0-9]+>id}/{slug}            Listing.show
GET     /{<[0-9]+>id}                   Listing.show

必须有两个控制器方法才能实现此目的:

public static void show(Long id, String slug) { /* ... */ }
public static void show(Long id) { /* ... */ }

然后可以从视图中使用它:

#{a @Listing.show(item.id, item.title.slugify())}link title#{/a}
#{a @Listing.show(item.id)}link title#{/a}
相关问题