2011-07-13 59 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

是的!第二個控制器方法丟失。我想這是寬容的,只是不使用第二個參數。 –