限制NinjaFramework中控制器方法中的参数数量?

时间:2017-04-18 14:35:36

标签: java ninjaframework

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

我的方法如下:

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()途径( “/人”)与(PersonController :: personIndex)。;

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

router.GET()。route(“/ persons”)。with(PersonController.class,“personIndex”);

1 个答案:

答案 0 :(得分:0)

在浏览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个参数应该有效。