我正在使用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”);
答案 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个参数应该有效。