在我的网页上,我希望有一个全局搜索框,即每个子页面上都可以使用的搜索框(比如在SO的网页标题中)。为此,我将搜索表单放在“基础”模板中,该模板用于每个子页面,并且工作正常。但是当我想显示显示搜索结果的页面时,我的问题就出现了。在这样的页面上,我想实现以下之一:
要做第一件事,我必须向基本模板提供查询字符串。这意味着,我将不得不为基础模板添加新参数,因此每个视图也需要这样的参数(大部分时间都是空字符串)。我对吗?有更简单的方法吗?
对于第二件事,我必须检测当前URL并检查这是否是搜索结果页面。似乎要实现这一点,我必须将请求参数添加到基本模板(这基本上意味着它与提供查询字符串的问题相同)。
有更简单的方法吗?
顺便说一下,我正在使用java。
答案 0 :(得分:1)
您的问题与本网站目前排名最高的playframework-2.0问题的精神相同。我建议您查看问题的accepted answer,特别是有关HTTP上下文的部分。在上下文中使用args
映射将允许您实现任一行为:
在此全局搜索框中显示查询字符串值。
让处理搜索请求的操作将搜索词放入特定键下的上下文映射中,然后在搜索框标记中检查此键。
隐藏全局搜索框(因此我可以在结果页本身中添加更高级的搜索框)。
让处理搜索请求的操作将布尔值放入特定键下的上下文映射中,然后根据此键的存在/值有条件地呈现搜索框标记。
答案 1 :(得分:1)
首先,您可以在 base 布局中使用 optionall 参数,就像
一样@(title: String, query: String = null)
因此,您只能在结果视图中使用它:
@myBaseLayout(title="Search results", query=query)