小编Mic*_*l-7的帖子

AspectJ MethodSignature为getParameterNames()返回null

我有一个方面基于目标方法的细节进行各种计算,因此提前提取这些如下:

    @Around("execution(* com.xyz.service.AccountService.*(..))")
public void validateParams(ProceedingJoinPoint joinPoint) throws Throwable {
    final MethodSignature signature = (MethodSignature) joinPoint.getSignature();

    final String methodName = signature.getName();
    final String[] parameterNames = signature.getParameterNames();
    final Object[] arguments = joinPoint.getArgs();
    ...
    ...
    ...
    joinPoint.proceed();
}
Run Code Online (Sandbox Code Playgroud)

在提取的细节中,所有细节都反映了除了始终返回null的parameterNames之外的预期信息.我希望它按照下面的签名返回{accountDetails}.谁会知道我可能会遗漏什么,或者这是一个错误?

这是我正在反对的目标方法的签名:

Long createAccount(RequestAccountDetails accountDetails);
Run Code Online (Sandbox Code Playgroud)

java reflection aop aspectj

6
推荐指数
1
解决办法
3865
查看次数

使用Wicket Tester时,如何在单元测试中保持组件路径不变

我有几个wicket测试,它们针对可排序的DataTable,特别是ajax-单击可排序的列标题并断言渲染的主体行的内容.现在,表组件的后代的组件层次结构由wicket框架自动生成,并导致排序链接(ajax)的路径类似于:

table:topToolbars:toolbars:0:headers:1:header:orderByLink
Run Code Online (Sandbox Code Playgroud)

但是,当DataTable跨测试重新呈现时,工具栏组件的索引每次都会递增,即类似于:

table:topToolbars:toolbars:1:headers:1:header:orderByLink
Run Code Online (Sandbox Code Playgroud)

然后打破后续测试的硬编码路径,因为它们将不再匹配.

数据表构造的代码片段如下:

        final PayeesProvider dataProvider = new PayeesProvider();
    table = new DataTable<ResponsePayeeDetails>("payees", columns, dataProvider, rowsPerPage);
    table.setOutputMarkupId(true);
    table.addTopToolbar(new AjaxFallbackHeadersToolbar(table, dataProvider) {

        private static final long serialVersionUID = -3509487788284410429L;

        @Override
        protected WebMarkupContainer newSortableHeader(final String borderId, final String property, final ISortStateLocator locator) {
            return new AjaxFallbackOrderByBorder(borderId, property, locator, getAjaxCallDecorator()) {

                @Override
                protected void onRender() {
                    System.out.printf("Path: %s\n", this.getPageRelativePath());
                    super.onRender();
                }

                private static final long serialVersionUID = -6399737639959498915L;

                @Override
                protected void onAjaxClick(final AjaxRequestTarget target) {
                    target.add(getTable(), navigator, navigatorInfoContainer);
                }

                @Override …
Run Code Online (Sandbox Code Playgroud)

java datatable wicket wicket-tester

5
推荐指数
1
解决办法
817
查看次数

标签 统计

java ×2

aop ×1

aspectj ×1

datatable ×1

reflection ×1

wicket ×1

wicket-tester ×1