Validation 播放2框架控制器查询参数验证

Validation 播放2框架控制器查询参数验证,validation,playframework,playframework-2.2,Validation,Playframework,Playframework 2.2,尊敬的Playframework用户: 我已经切换到PlayFramework2.2,我有一个关于验证的问题。我希望有人能给我指出正确的方向 我有一个控制器来获取集合 GET /country controllers.api.CountryController.list(fetchInactive: Int ?= 0, sortBy: String ?= "name", sortDir: String ?= "asc" ) public static Result list(

尊敬的Playframework用户:

我已经切换到PlayFramework2.2,我有一个关于验证的问题。我希望有人能给我指出正确的方向

我有一个控制器来获取集合

GET /country controllers.api.CountryController.list(fetchInactive: Int ?= 0, sortBy: String ?= "name", sortDir: String ?= "asc" ) public static Result list( int fetchInactive, String sortBy, String sortDir) GET/country controllers.api.CountryController.list(fetchInactive:Int?=0,sortBy:String?=“name”,sortDir:String?=“asc”) 公共静态结果列表(int fetchInactive、String sortBy、String sortDir) 它工作得很好,尽管我想限制可以作为sortBy字段指令发送的可能值

例如,元素列表。比如“姓名”、“身份证”等等。 在游戏1中,很容易验证控制器参数。看

我知道如何在模型中使用JSR-303,尽管这里是一个API,我想验证各个参数

有人能给我一个提示或一个例子,我如何才能做到这一点

我想使用注释来定义我自己的验证器,以验证sortBy只接受某些字符串值


提前感谢,

实际上,在这种情况下,您应该使用
sortBy
sortDir
的默认值。如果用户给出了超出允许范围的内容,您可以在操作中轻松完成(不需要使用验证程序)


嗨,谢谢你的回复,这没问题。我希望避免重复代码,因为我的一些控制器中有这样的代码。我希望使用注释实现验证,在注释参数中,我可以指定可以接受的值。在Play 1.x中,这项工作非常出色。那么我可以使用Spring验证和AOP吗?或者我应该使用动作合成的注释来实现验证器吗?有什么想法吗?
public static Result list(Integer fetchInactive, String sortBy, String sortDir) {
    Integer resolvedFetchInactive
            = (fetchInactive != null && Arrays.asList(0, 1, 2).contains(fetchInactive)) ? fetchInactive : 0;

    String resolvedSortBy
            = (sortBy != null && Arrays.asList("name", "id").contains(sortBy)) ? sortBy : "name";

    String resolvedSortDir
            = (sortDir != null && Arrays.asList("asc", "desc").contains(sortDir)) ? sortDir : "asc";

    if (!resolvedSortBy.equals(sortBy) || !resolvedSortDir.equals(sortDir) || !resolvedFetchInactive.equals(fetchInactive)) {
        //redirect to the same list with allowed values
        return redirect(routes.Application.list(resolvedFetchInactive, resolvedSortBy, resolvedSortDir));
    }

    return ok("You're going to display list sorted by: " + resolvedSortBy + " " + resolvedSortDir + ", fetchInactive is: " + resolvedFetchInactive);
}