【发布时间】:2015-03-02 16:48:22
【问题描述】:
我有一个带有一堆过滤器的模型类:
@Entity
public class MyModel extends Model
{
String name;
String filterA;
String filterB;
String filterC;
}
基本上我将它用于带有搜索和搜索结果的页面。
提交搜索非常简单,因为我只是发布并使用bindFromRequest() 获取所有过滤器。
但是当我想分页时,我发现它有问题。当用户选择页面时,我希望能够记住这些选定的过滤器。分页链接是 GET 请求,所以我不能使用bindFromRequest()。我四处寻找QueryStringBindable,但我不明白如何绑定模型。
理想情况下,我不想将每个过滤器都传递给分页链接,因为过滤器的数量可能会不断变化。
编辑:
一个更好的框架问题是,如果我在一个页面上有一堆过滤器,然后我点击另一个页码,我怎样才能最好地将过滤器信息发送到下一页,以便可以填充所有控件?通过每个过滤器不是很干净,因为过滤器的数量可以增加。
【问题讨论】:
-
我认为您可以在主模型中创建一个内部类,而不是为 searchdata 创建实体,就像Play Sample 中描述的那样。您也可以处理这些获取请求。
-
我已经看过那个样本了。我的问题是 Page 对象只有几个过滤器,但我有更多,而且它们可以不断增加。我希望有一种方法可以将所有过滤器保存到用户定义的对象中。就像提交是多么容易一样。
-
也许将 JSON 序列化到 Flash 范围内?还是会话?
-
对不起,但我不认为这是一个好的想法(你所描述的问题)。你知道实体代表一个表,你想使用它,因为它可以让你保存以前的过滤器(不好接近我,每次都创建新行)并且你说
I want to be able to remember these selected filters when the user is selecting a page如果在请求下一页用户更改搜索过滤器之前怎么办,那么为什么要保存以前的过滤器,如果它有可能为每个请求进行更改,所以它有利于通过过滤器对于每个请求 -
我没有将它保存为每一行。我可以删除实体对象。那没关系。我只需要弄清楚如何将选定的过滤器从一个页面传递到另一个页面。当用户选择一个新的过滤器时,它可以正常工作,因为有一个提交按钮。但是分页的情况下,没有提交按钮。
标签: java playframework playframework-2.0