2016-07-21 3 views
0

Ich versuche, um Around Rat an meine "Login.jsp" mit eckigen js. Und das Problem ist, meine Controller-Methode ist zu überprüfen, und ich bin um Rat, um Methode zu überprüfen, aber wenn ich meine Anwendung ausführen, werde ich undefined als Antwort auf Login.jsp erhalten. Und aber das Ergebnis, das ich in meinem Ratschlag gedruckt habe, enthält das erwartete Ergebnis. Aber ich bekomme es nicht auf Kundenseite.@Around rat die richtige Antwort zurück, aber auf der Client-Seite Antwort ist null oder undefined

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; 
} 
+0

Ich habe Ihre Frage umformatiert, um sie zumindest lesbar zu machen. Aber bitte aktualisieren Sie es, um mir und anderen zu helfen, zu verstehen, was Sie tatsächlich gefragt haben. Zum Beispiel verstehe ich wirklich nicht, wie Angular JS an all dem beteiligt ist. Für mich sieht es wie ein Java und AspectJ (oder Spring AOP) Problem aus. – kriegaex

Antwort

0

Ihr pointcut passt nicht, weil der Rat eine void Rückgabetyp hat, aber Ihre Methode gibt eine JSONObject. Vielleicht möchten Sie Ihre Ratschläge Erklärung ändern:

@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; 
    } 
} 

Bitte beachten Sie

  • public JSONObject logWriter statt public void logWrittter,
  • Object JSONObject = (JSONObject) jp.proceed(); statt Object result = jp.proceed(); und
  • return result; statt keinen Rückgabewert.
+0

hii @kriegaex danke, dass es für mich funktioniert. @Around ("execution (* com.admin.controller.LoginController.check (..))") \t öffentlichen JSONObject logWrittter (ProceedingJoinPoint jp) wirft Throwable \t { Simple Datum = new Simple(); \t \t System.out.println ("Datum Uhrzeit ::" + Datum.format (neues Datum(). GetTime())); \t \t log.info ("Datum Uhrzeit ::" + Datum.format (neues Datum(). GetTime())); \t \t Objekt obj = jp.proceed(); \t \t System.out.println ("Ergebnis eines letzten Endes ascpect angewendet" + obj); \t \t log.info ("Ergebnis ::" + obj); \t \t Rückgabe (JSONObject) obj; \t} – qwerty24491

+0

Ich freue mich für Sie und würde es begrüßen, wenn Sie meine Antwort annehmen und aufheben. – kriegaex

Verwandte Themen