2014-01-21 2 views
0

은 내가 내 사용자 지정 주석 주석 간단한 MVC 컨트롤러를 가지고있다.사용자 정의 주석 스프링 MVC ResultBinding

@Around(value = "@annotation(annotation)") 
public Object verifyOtp(final ProceedingJoinPoint jointPoint, 
         final AuthentificationForte annotation) throws Throwable { 
    try { 
    if (authentificationForteEnabled) { 
     [...] 
    } else { 
     throw new AuthentificationForteException(); 
    } 
    } else { 
     return jointPoint.proceed(); 
    } 
    } finally { 

    } 
} 

이제 유효성 검사가 실패하면 500 오류 페이지로 리디렉션됩니다. 내 목표는 같은 페이지에 머물면서 BindingResult에 거부 메시지를 추가하는 것입니다 : 나는 그렇게 할 수있는 방법을 발견하지 않았습니다

result.rejectValue("suiteRib", "BeneficiaireForm.InvalidRib"); 

를, 내가 찾은 유일한 방법은 내 모든 로직을 변경하는 것입니다 컨트롤러 코드에서 try/catch와 함께 유효성 검사 서비스를 사용하는 동안 주석을 사용하지 않아야합니다.

이 문제를 처리하고 바인딩 결과에 액세스하고 애스펙트가이 예외를 throw 할 때 오류 메시지를 추가하는 방법이 있습니까?

답변

0

가장 확실합니다. Aspectj overwrite an argument of a method

또한 (가 @Configurable 표시하는 기억) 화면 클래스로 서비스를 autowire하기 수

여기 조작 인수의 예입니다.

이전에 인수를 알고 있다면 포인트 컷 정의에 포함될 수 있다고 생각합니다.이 경우에는 around 메서드에서 직접 참조 할 수 있습니다. 이것은 인수가 강력하게 입력되면서 훨씬 좋았습니다. http://docs.spring.io/spring/docs/current/spring-framework-reference/html/aop.html

0

가 귀하의 질문에 대답하기는 너무 늦을 수 있지만 당신이 그것을 처리 할 수있는 두 가지 방법이 있습니다 :

당신은 더 많은 읽을 수 있습니다 여기에

  1. 주위 (계속 시도 캐치를 가지고는)에 aspect와 런타임 예외가 발생하면 aspect의 응답을 리턴 할 수있다. (오류의 원인을 보여주는 일반적인 JSP 또는 일반적인 JSON과 오류 메시지)
  2. 두 번째 옵션은 Spring Exception Handler Controller advice를 사용할 수있다. Spring MVC는 특정 예외 클래스 유형에 대한 특정 핸들러 메소드를 호출하기위한 멋진 예외 핸들러 컨트롤러 메커니즘을 제공한다. 우리는 현재 우리가 예외를 처리하기 위해이 방법의 조합을 사용하는 응용 프로그램이

: (https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc 다음은 블로그 링크입니다).