2016-07-21 5 views
0

私は "jar"を使用して "Login.jsp"にAroundアドバイスを適用しようとしています。問題は私のコントローラメソッドがチェックであり、メソッドを調べるためにアドバイスを使っていますが、アプリケーションを実行すると、Login.jspのレスポンスとして未定義になります。しかし、私のアドバイスで印刷した結果には期待された結果が含まれています。しかし、クライアント側では得られません。アドバイスはvoid戻り値の型を持っていますが、あなたの方法はJSONObjectを返すため@Aroundアドバイスが正しいレスポンスを返すが、クライアントサイドレスポンスがnullまたは未定義

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

私は少なくとも読めるようにあなたの質問を再フォーマットしました。しかし、私と他の人があなたが実際に尋ねたことを理解するのを助けるために、それを更新してください。たとえば、Angular JSがこのすべてにどのように関与しているかはわかりません。私にとっては、JavaとAspectJ(またはSpring AOP)の問題のように見えます。 – kriegaex

答えて

0

あなたのポイントカットが一致しません。だから、多分あなたはあなたのアドバイスの宣言を変更したい:

@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;の代わりに、ノーリターン値に注意してください。
+0

hii @kriegaexは私のために働いてくれてありがとう。 @Around( "実行(* com.admin.controller.LoginController.check(..))") \t公共JSONObject logWrittter(ProceedingJoinPointのJP)がThrowableを \tを{ てSimpleDateFormat日=新しいてSimpleDateFormat()スロー。 \t \t System.out.println( "Date Time ::" + date.format(new Date()。getTime())); \t \t log.info( "Date Time ::" + date.format(new Date()。getTime())); \t \tオブジェクトobj = jp.proceed(); \t \t System.out.println( "結果終了アスペクトが適用されました" + obj); \t \t log.info( "result ::" + obj); \t \t return(JSONObject)obj; \t} – qwerty24491

+0

私はあなたに満足しており、私の答えを受け入れてアップアップしていただきありがとうと思います。 – kriegaex

関連する問題