0

我正在使用 NinjaFramework 6.0,尝试将第 10 个 @Param 添加到我的控制器方法中,现在我在编译 Routes.java 时收到“找不到适用于 with(Controller[...]Index) 的合适方法”错误。

我的方法如下所示:

public Result personIndex(
        @Param("ssn") Optional<String> ssn,             
        @Param("dodId") Optional<String> dodId,             
        @Param("firstName") Optional<String> firstName, 
        @Param("middleName") Optional<String> middleName, 
        @Param("lastName") Optional<String> lastName,
        @Param("birthday") Optional<String> birthday, 
        @Param("branch") Optional<String> branch, 
        @Param("rateRank") Optional<String> rateRank, 
        @Param("status") Optional<String> status, 
        @Param("page") Optional<Integer> page) { ... }

如果我删除其中一个参数,那么一切都会编译并工作。这是硬限制吗?我应该将这些封装成某种形式/ dto 对象吗?

--

使用这种类型的 Route 配置时,这似乎是一个问题:

router.GET().route("/persons").with(PersonController::personIndex);

如果我切换到“旧”方式,它可以正常工作:

router.GET().route("/persons").with(PersonController.class, "personIndex");

4

1 回答 1

0

在浏览忍者文档(http://www.ninjaframework.org/documentation/basic_concepts/routing.html)时,我注意到以下文本

ninja.ControllerMethods 类定义了各种接口,这些接口是 Java 8 lambda 表达式可接受的方法签名。控制器方法返回一个 ninja.Result 并且有 0 到 12 个参数。如果需要超过 12 个参数,可以回退到 Ninja 遗留的 Class + “method”的路由策略。

不确定是否从 6.0 版本有所改变,但 10 个参数应该可以工作。

于 2017-11-14T21:27:35.990 回答