我有一个控制器, params 对象包含id,username,max和offset值。
我正在尝试访问Aop中的 params 对象,但它只给出了默认长度和类参数。
我尝试以不同方式访问但无法访问参数值
Controller ::
class UserController {
def index() {
params.max = Math.min(params.max ? params.int('max') : 5, 100)
params.offset = params.offset ? params.offset.toInteger() : 0;
User user = User.findById(params.id);
------
-----
----
}
}
AOP代码::
@Aspect
class LogInterceptor {
private static final logger = LogFactory.getLog(this)
@Before("within(com.sample..*)")
public void logBefore(JoinPoint joinPoint) {
String msg = String.format("logBefore : %s.%s(%s)",
joinPoint.getTarget().getClass().getName(),
joinPoint.getSignature().getName(),
Arrays.toString(joinPoint.getArgs()));
logger.info(msg);
}
}
如何访问值id,用户名和其他参数
记录上面的代码::
2014-11-13 16:28:10,722 [http-bio-8080-exec-5] INFO aop.LogInterceptor - logBefore:com.sample.controller.UserController.getMetaClass([])
2014-11-13 16:28:10,722 [http-bio-8080-exec-5] INFO aop.LogInterceptor - logBefore:com.sample.controller.UserController.getMetaClass([])
2014-11-13 16:28:10,723 [http-bio-8080-exec-5] INFO aop.LogInterceptor - logBefore:com.sample.controller.UserController.getProperty([ params ])
2014-11-13 16:28:10,724 [http-bio-8080-exec-5] INFO aop.LogInterceptor - logBefore:com.sample.controller.UserController.index([])
2014-11-13 16:28:10,727 [http-bio-8080-exec-5] INFO aop.LogInterceptor - logBefore:com.sample.service.UserService.getMetaClass([])
在第三行我得到了参数,但我需要它的内在值
提前致谢
答案 0 :(得分:0)
在最简单的情况下,您可以使用link中的controller interceptors
:
class UserController {
def index() {
}
def afterInterceptor = {
log.debug "action:$actionName -> $params"
}
}
但是,如果需要将同一个拦截器应用于多个控制器,则可以使用拦截器继承基类,或使用Filters
class LoggingFilters {
def filters = {
logging(controller:'*', action:'*') {
after = {
log.debug "controller:$controllerName action:$actionName -> $params"
}
}
}
}