2013-10-23 33 views
2

我在Play 2.1.4項目中有一個搜索功能,它可以路由到/ search /:query。在Play Framework中處理空查詢2.1.4

我該如何處理用戶在不添加查詢的情況下進行搜索的情況? 從2.1版開始,可選參數就消失了,我不相信使用不同的路線是一個很好的解決方案。

回答

3

其實兩條路線有什麼不對?從邏輯角度來看,這些是兩個獨立的動作:使用param的路由應該初始化搜索過程,而空的應該顯示空的搜索表單或做一些重定向。

GET  /search/:term controllers.Application.search(term: String) 
GET  /search   controllers.Application.blankSearch 

Optionaly你可以用與清潔方法,因爲普通的HTML表單將恰好需要的格式發送請求的默認值(即空字符串)路線:

GET  /search   controllers.Application.search(q: String ?= "") 

(要求:http://domain.loc/search?q=Looking+for+something

+0

很好的答案,謝謝。我想我會去分開的路線! –

+0

只是提示:第一個解決方案將很難在常見的HTML表單中處理,很可能您需要使用jQuery來構建正確的url,而第二個解決方案將允許您通過將輸入字段與'name =「q」 '在GET表單中。 – biesior

+0

我剛剛意識到,我可能已經很糟糕地解釋了情況,並且您誤解了它。我使用表單發佈到/ search/performsearch,然後使用searchForm.bindFromRequest()中的查詢重新路由到/ search /:query。 –