2011-07-13 30 views
5

我想在游戏中设置一个搜索引擎优化友好路线!具有多个参数的框架(第二个参数是可选的)。什么我的目标是:
玩多个参数的框架路由

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

但是玩的是产生是:

 
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 

回答

3

看来你的模板与第一路径匹配。逆转命令将做的伎俩,

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

也有你的控制器接受用户名和articleSlug。

show(username, articleSlug){} 
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} 
+0

也许item.title.slugify()不解释未知原因...你试试含变种塞之前创建一个变量= item.title.slugify(),然后的? – mandubian

+1

你的第一个模板正在走你的第二条路线。对于第二个模板,你是否有匹配的控制器,即。显示(id,slug)? – sojin

+0

是的!第二个控制器方法丢失。我想这是宽容的,只是不使用第二个参数。 –