Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring AOP:java.util.HashMap不能强制转换为SomeClass_Java_Spring_Aop - Fatal编程技术网

Spring AOP:java.util.HashMap不能强制转换为SomeClass

Spring AOP:java.util.HashMap不能强制转换为SomeClass,java,spring,aop,Java,Spring,Aop,当我使用spring aopaspectJ proxy target class=true时,List可以从json接收参数,但它表明java.util.hashmap不能转换为MyEntity。我正在使用SSH框架。代码如下所示: package com.yoyo.aspect; @Aspect @Component @Scope("prototype") @ParentPackage("json-default") @Results({@Result(name="result", type

当我使用spring aopaspectJ proxy target class=true时,List可以从json接收参数,但它表明java.util.hashmap不能转换为MyEntity。我正在使用SSH框架。代码如下所示:

package com.yoyo.aspect;

@Aspect
@Component
@Scope("prototype")
@ParentPackage("json-default")
@Results({@Result(name="result", type="json", params={"root","dataMap"})})
public class LoggerAspect extends SuperAction{

@Autowired
private LoggerService loggerService;

//signature
@Pointcut("execution(String com.yogo.action.admin..*.*(..))")
public void adminLogger(){}

@Pointcut("execution(String com.yogo.action.enterprise..*.*(..))")
public void enterpriseLogger(){}

@Pointcut("execution(String com.yogo.action.product..*.*(..))")
public void productLogger(){}

@Around(value="adminLogger()||enterpriseLogger()||productLogger()")
public Object loggerAround(ProceedingJoinPoint pjp) throws Throwable{

    ServletRequestAttributes attr = (ServletRequestAttributes)RequestContextHolder.currentRequestAttributes(); 
    HttpSession session=attr.getRequest().getSession(true);

    String className = pjp.getSignature().getDeclaringTypeName();

    Method method = ((MethodSignature)pjp.getSignature()).getMethod();
    String methodName = method.getName();

    Logger log = new Logger();

    log.setClassName(className);
    log.setMethodName(methodName);

    try {

        log.setResult("success");
        return pjp.proceed();

    } catch (Throwable throwable) {

        log.setResult("failure");
        return RESULT;

    } finally {

        if(session!=null&&session.getAttribute("AID")!=null){
            log.setAid((int)session.getAttribute("AID"));
            log.setDatetime(new Date());

            loggerService.save(log);
        }
    }

}
}

响应sayingexception.getMessage:

{"msg":"java.util.HashMap cannot be cast to com.yogo.entity.ProductProperty","flag":1}
如果我对AOP的执行进行评论,那么一切都运行良好,列表中的所有数据都可以在mysql中顺利接收和写入

//@Around(value="adminLogger()||enterpriseLogger()||productLogger()")
我还使用println检查了接收列表中的数据。我发现它可以接收,但无法强制转换到MyEntity ProductProperty:

System.out.println(list.get(i));
//this works

System.out.println(list.get(i).getPpid());
//this got error as above

我不太熟悉spring aop机制,有人能帮忙吗?非常感谢你

输入错误:System.out.printlnlist.geti.getPpid//如上所述,这是一个错误。我已经纠正了你的打字错误。你可以随时编辑你自己的问题,没有必要发表评论而不是修复它。此外,你的代码看起来非常混乱和有缺陷。例如,您返回结果-该变量来自何处?然后将int值与空字符串进行比较,这没有任何意义。等等但最重要的问题是,您想知道为什么ProductProperty.getPpid不起作用,但您没有显示该类的源代码。请改进问题,最好是提供一个答案。那我很乐意帮助你。
//@Around(value="adminLogger()||enterpriseLogger()||productLogger()")
System.out.println(list.get(i));
//this works

System.out.println(list.get(i).getPpid());
//this got error as above