一般动作
登录
Wiki: BROPEN ▼: Document Index
»
Space: FAQ ▼: Document Index
»
Page: 列表（list）页面中，如何配置默认查询条件
搜索
zh
页面动作
导出 ▼: 以PDF格式导出 以RTF格式导出 以HTML格式导出
更多动作 ▼: 打印预览 察看源码
欢迎进入Wiki » FAQ » 列表（list）页面中，如何配置默认查询条件?

# 列表（list）页面中，如何配置默认查询条件?

在2014-09-25 09:54上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

显示某个domain的列表界面时，有时候需要默认只显示一部分数据，比如仅显示本年度的员工报销信息，对应属性 year。

假如打开列表的链接配置在某个导航中，在bro-framework中，有如下几种实现方式，并且在应用场景上有略微的差异。

# 方式一

列表界面中包含如下代码，用户可以选择年份进行查询：

年份: <g:select name="d.year" from="${(2010..2030)}" noSelection="['':'']" />

如果不希望用户能自行选择年份，可以设置css将这个select隐藏起来。

在导航的链接中添加参数 "search.where" 和 "search.year"，前者代表查询hql的where条件部分，后者表示2013这个值将作为默认值显示在上面的年份下拉列表中，如：

<g:link controller='foobar' params="${['search.d.where':'d.year=2013', 'search.d.year':'2013']}" target=....>Foobar</g:link>

# 方式二

如果希望用户不能自行选择年份，而且也不想使用css来隐藏列表框，仅需要修改导航链接，采用如下的参数：
['search.where':'d.year=2013', 'search.where_precondition':'d.year=2013']

BroFWK 4.2后，简化为：
['search.precondition':'d.year=2013']

# 方式三

如果既不希望用户自行选择，还希望不带额外的参数打开list页面，直接显示本年度的信息。也就是说，限定死只能显示本年度信息。

可以直接修改控制器里的list模板，在查询的hql中带上年度条件即可，注意的是 xxx.count() 也需要改成条件查询如 xxx.countByYear(2013)，如：

Foobar.findAll("from ${c1} d where year=2013 ${orderBy}", [], params);

# 方式四

方式三显然太缺乏灵活性了，可以略微改进一下。

在 list.gsp 的 form 标签内，增加一个隐藏的input，如：

<input type="hidden" name="year" value="${params.year}" />

然后在控制器中，根据params.year进行查询，如：
if ( !params.year ) params.year = 2013;
Foobar.findAll("from ${c1} d where year=${params.year} ${orderBy}", [], params);

标签： BroFramework search
在2013-10-25 10:59上被李小翔创建

- 评论 （0）
- 附件 （0）
- 记录
- 信息

# 快速链接

- 首页
- 新闻动态
- FAQ

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号