【问题标题】:Play 2 Framework controller query parameter validationPlay 2 框架控制器查询参数验证
【发布时间】:2014-08-07 07:37:27
【问题描述】:

尊敬的 Playframework 用户。

我已切换到播放框架 2.2,但我有一个关于验证的问题。我希望有人能指出我正确的方向。

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

GET /country controllers.api.CountryController.list(fetchInactive: Int ?= 0, sortBy: String ?= "name", sortDir: String ?= "asc" ) 公共静态结果列表(int fetchInactive,字符串 sortBy,字符串 sortDir)

效果很好,尽管我想限制一个可以作为 sortBy 字段指令发送的可能值。

例如元素列表。比如“姓名”、“身份证”等。 在播放 1 中,验证控制器参数非常容易。见Play Framework: automatic validation of controller methods applied?

我知道如何将 JSR-303 与模型一起使用,尽管这是一个 API,我想验证各个参数。

有人可以给我一个提示或示例,我可以如何做到这一点?

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

提前致谢,

【问题讨论】:

    标签: validation playframework playframework-2.2


    【解决方案1】:

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

    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);
    }
    

    【讨论】:

    • 您好,谢谢您的回复,没关系。我想避免重复代码,因为我的一些控制器中有这个。我希望使用注释来实现验证,并且在注释参数中我可以指定我可以接受的值。这在 Play 1.x 中工作得非常好。那我可以使用 Spring 验证和 AOP 吗?或者我应该使用 Action 组合使用注释来实现验证器吗?有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 2013-03-19
    • 1970-01-01
    • 2016-11-14
    • 2014-01-17
    • 1970-01-01
    • 2017-01-12
    相关资源
    最近更新 更多