限制 NinjaFramework 中控制器方法中的参数数量?
Posted
技术标签:
【中文标题】限制 NinjaFramework 中控制器方法中的参数数量?【英文标题】:Limit to number of arguments in a controller method in NinjaFramework? 【发布时间】:2017-09-14 11:13:21 【问题描述】:我正在使用 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 对象吗?
--
使用这种类型的路由配置时,这似乎是一个问题:
router.GET().route("/persons").with(PersonController::personIndex);
如果我切换到“旧”方式,它可以正常工作:
router.GET().route("/persons").with(PersonController.class, "personIndex");
【问题讨论】:
【参考方案1】:在浏览 Ninja 文档 (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 个参数应该可以工作。
【讨论】:
以上是关于限制 NinjaFramework 中控制器方法中的参数数量?的主要内容,如果未能解决你的问题,请参考以下文章