Aspectj 覆盖方法的参数

发布于 2024-10-05 12:40:25 字数 550 浏览 4 评论 0原文

我正在开发一个方面,用于检查 setter 方法的参数并用 null 值覆盖空字符串。这是我到目前为止的状态:

@Before("execution(* de.foo.entity.*.set*(..)) && args(java.lang.String)")
public void check(final JoinPoint jp) {
    LOGGER.debug(jp.getSignature().toLongString());
    Object[] args = jp.getArgs();
    for (int i = 0; i < args.length; i++) {
        if (args[i] instanceof String && ((String) args[i]).isEmpty()) {
            args[i] = null;
        }
    }
}

不幸的是,覆盖语句 args[i] = null; 现在可以工作了!有谁知道我应该如何覆盖它?

干杯,

凯文

I'm developing an aspect that checks arguments of setter methods and overwrites empty strings with null value. This is my state so far:

@Before("execution(* de.foo.entity.*.set*(..)) && args(java.lang.String)")
public void check(final JoinPoint jp) {
    LOGGER.debug(jp.getSignature().toLongString());
    Object[] args = jp.getArgs();
    for (int i = 0; i < args.length; i++) {
        if (args[i] instanceof String && ((String) args[i]).isEmpty()) {
            args[i] = null;
        }
    }
}

Unfortunately the overwrite statement args[i] = null; does now work! Do anyone know how should I overwrite it?

Cheers,

Kevin

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

最单纯的乌龟 2024-10-12 12:40:25

我相信你必须实施周围的建议,而不是之前的建议。

因为您可以使用继续处理新参数:

proceed(newArgs);

I believe you have to implement an around advice, instead of a before advice.

Because you can use proceed with your new arguments:

proceed(newArgs);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文