Playframework 在Play Framework 2.1.4中处理空查询

Playframework 在Play Framework 2.1.4中处理空查询,playframework,playframework-2.1,Playframework,Playframework 2.1,我在Play 2.1.4项目中有一个搜索功能,它路由到/search/:query 我将如何处理用户搜索而不添加查询的情况? 从Play 2.1开始,可选参数就消失了,我不认为使用不同的路线是一个很好的解决方案。实际上两条路线有什么问题?从逻辑角度来看,这是两个独立的操作:带有param的route应该初始化搜索过程,而空的route应该显示空的搜索表单或执行一些重定向 GET /search/:term controllers.Application.search(term: St

我在Play 2.1.4项目中有一个搜索功能,它路由到/search/:query

我将如何处理用户搜索而不添加查询的情况?
从Play 2.1开始,可选参数就消失了,我不认为使用不同的路线是一个很好的解决方案。

实际上两条路线有什么问题?从逻辑角度来看,这是两个独立的操作:带有param的route应该初始化搜索过程,而空的route应该显示空的搜索表单或执行一些重定向

GET     /search/:term   controllers.Application.search(term: String)
GET     /search         controllers.Application.blankSearch
可选地,您可以使用带有默认值(即空字符串)的路由,这是一种干净的方法,因为普通HTML表单将以完全需要的格式发送请求:

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

(请求:
http://domain.loc/search?q=Looking+关于+某事

回答得好,谢谢。我想我会选择不同的路线!提示:第一种解决方案在普通HTML表单中更难处理,很可能您需要使用jQuery来构建正确的url,而第二种解决方案将允许您通过在GET表单中放置带有
name=“q”
的输入字段来发送请求。我刚刚意识到,我可能对这种情况解释得很糟糕,您误解了。。我使用一个发布到/search/performsearch的表单,然后通过searchForm.bindFromRequest()中的查询重新路由到get/search/:query。