[X] 中的 [getAssociatedToEntities] 操作接受 [java.util.List] 类型的参数

Posted

技术标签:

【中文标题】[X] 中的 [getAssociatedToEntities] 操作接受 [java.util.List] 类型的参数【英文标题】:The [getAssociatedToEntities] action in [X] accepts a parameter of type [java.util.List] 【发布时间】:2017-10-09 13:18:57 【问题描述】:

上下文

我在 Grails 2.4.4 中有一个使用 Spring Security Rest Plugin 1.5.4 for Grails 和 Spring Security Core 2.0.0 的项目,我收到了这个警告

Warning |
The [getAssociatedToEntities] action in [security.UserController] accepts a parameter of type [java.util.List].  Interface types and abstract class types are not supported as command objects.  This parameter will be ignored.

       @Secured("hasAnyRole('READ__USER', 'READ__PROFILE')")
       ^

这是代码...

构建配置

//...
compile "org.grails.plugins:spring-security-core:2.0.0"
compile "org.grails.plugins:spring-security-rest:1.5.4"
//...

UserController (警告来自的代码!)

@Secured("hasAnyRole('READ__USER', 'READ__PROFILE')")
def getAssociatedToEntities(List<Long> e, SearchCommand cmd)
    //code omitted

问题:

如何消除该警告?

提前致谢!

【问题讨论】:

【参考方案1】:

将其包装在列表中:@Secured("hasAnyRole(['READ__USER', 'READ__PROFILE'])")

【讨论】:

【参考方案2】:

java.util.List 是一个接口,不能用作Command Object,试试这个吧:

创建一个包含列表的命令对象

import grails.validation.Validateable

@Validateable
class SearchListCommand extends SearchCommand 
  List values

并将列表的声明替换为getAssociatedToEntities 操作中的命令对象

def getAssociatedToEntities(SearchListCommand listCommand)  
     //code omitted...

【讨论】:

以上是关于[X] 中的 [getAssociatedToEntities] 操作接受 [java.util.List] 类型的参数的主要内容,如果未能解决你的问题,请参考以下文章

Java中的x++和++x有啥区别[重复]

JavaScript 中的 x >= x 模式

Javascript中的parseInt(x)和+(x)有啥区别[重复]

Matlab中的lambda表达式 f=@(x) x^2-2*x+1;

nodeenv 中的 x.x.x-rc Node.js 版本是啥?

Haskell 中的模块化算术