java中play方法的两个参数_如何在Play框架中处理可选的查询参数

我这样做的方法是使用自定义 QueryStringBindable . 这样我在路线中表达参数:

GET /birthdays/ controllers.Birthdays.getBirthdays(period: util.Period)

Period的代码如下所示 .

public class Period implements QueryStringBindable {

public static final String PATTERN = "dd.MM.yyyy";

public Date start;

public Date end;

@Override

public F.Option bind(String key, Map data) {

SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);

try {

start = data.containsKey("startDate")?sdf.parse(data.get("startDate") [0]):null;

end = data.containsKey("endDate")?sdf.parse(data.get("endDate")[0]):null;

} catch (ParseException ignored) {

return F.Option.None();

}

return F.Option.Some(this);

}

@Override

public String unbind(String key) {

SimpleDateFormat sdf = new SimpleDateFormat(PATTERN);

return "startDate=" + sdf.format(start) + "&" + "endDate=" + sdf.format(end);

}

@Override

public String javascriptUnbind() {

return null;

}

public void applyDateFilter(ExpressionList el) {

if (this.start != null)

el.ge("eventDate", this.start);

if (this.end != null)

el.le("eventDate", new DateTime(this.end.getTime()).plusDays(1).toDate());

}

}

如果我想对查询应用日期过滤, applyDateFilter 只是我在控制器中使用的一种便利方法 . 显然,您可以在此处使用其他日期默认值,或者在 bind 方法中使用除null之外的其他默认值作为开始日期和结束日期 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值