@Around建议返回正确的响应,但在客户端响应为null或未定义

时间:2016-07-21 10:19:17

标签: spring undefined response aop

我正在尝试使用angular js将Around建议应用于我的“Login.jsp”。问题是我的控制器方法是检查,我正在应用检查方法的建议,但当我运行我的应用程序时,我将在Login.jsp中得到未定义的响应。但是我在我的建议中打印的结果包含了预期的结果。但我没有在客户端获得它。

AroundAdvice.java

@Aspect @Component
public class AroundAdvice {
    static Logger log = Logger.getLogger(AfterLoginAspect.class.getName());

    @Around("execution(* com.admin.controller.LoginController.check(..))")
    public void logWrittter(ProceedingJoinPoint jp) throws Throwable {
        SimpleDateFormat date=new SimpleDateFormat();
        log.info("Date Time :: " + date.format(new Date().getTime()));
        Object result = jp.proceed();
        System.out.println("result around");
        log.info("result :: " + result);
        // returns {"get Status":"home"}
    }
}

LoginController.jsp

// authentication check
@RequestMapping(value = "/PostFormData", method = RequestMethod.POST)
public @ResponseBody JSONObject check(@RequestBody LoginBo login) {
    System.out.println("checkCredentials::" + login.getUserName());

    String username = login.getUserName();
    // log.info("uswername ::"+username);

    JSONObject result = new JSONObject();
    String encrptedpassword = encryptdPwd.encrypt(login.getPassWord());

    boolean login_status = loginService.checkCredentials(username, encrptedpassword);
    // log.info("login_status ::"+login_status);
    // System.out.println("staus ::"+login_status);

    if (login_status == true && login.isIs_system_generated_pwd() == true) {
        System.out.println("sys gen chnge pwd:: " + login.isIs_system_generated_pwd());
        result.put("getStatus", "change");
        // System.out.println(resultPage);
        // login.setIs_system_generated_pwd(false);
    } else if (login_status == true && login.isIs_system_generated_pwd() == false) {
        result.put("getStatus", "home");
        // System.out.println("Home paege ");
    } else {
        result.put("getStatus", "error");

    }
    System.out.println("result ::" + result);
    // log.info("result ::"+resultPage);
    return result;
}

1 个答案:

答案 0 :(得分:0)

您的切入点不匹配,因为建议的返回类型为void,但您的方法返回JSONObject。所以也许你想把你的建议声明改为:

@Aspect @Component
public class AroundAdvice {
    static Logger log = Logger.getLogger(AfterLoginAspect.class.getName());

    @Around("execution(* com.admin.controller.LoginController.check(..))")
    public JSONObject logWriter(ProceedingJoinPoint jp) throws Throwable {
        SimpleDateFormat date=new SimpleDateFormat();
        log.info("Date Time :: " + date.format(new Date().getTime()));
        Object JSONObject = (JSONObject) jp.proceed();
        System.out.println("result around");
        log.info("result :: " + result);
        return result;
    }
}

请注意

  • public JSONObject logWriter代替public void logWrittter
  • Object JSONObject = (JSONObject) jp.proceed();代替Object result = jp.proceed();
  • return result;而不是没有返回值。