2011-03-29 2 views
3

나는 최신 Play Framework에서 기본값 인 Secure 컨트롤러의 편집 된 버전을 구현하고 있습니다.Secure 모듈의 편집 된 버전을 구현하려고 할 때 ApplicationError

안전 동작을 사용자 지정하려는 경우 Secure 모듈의 원본을 복사하고 사용자 지정을 시작하는 것이 좋습니다.

그래서 내가 그랬어, 그리고 필요한 종속성을 편집 한 후 나는 다음과 같은 오류가 발생 :

Execution exception 
NullPointerException occured : null 

In /app/controllers/SecureController.java (around line 194) 

190: 
       security = classes.get(0); 
191: 
      } 
192: 
      if(security==null)System.out.println("security is null"); 
193: 
      try { 
194: 
       return Java.invokeStaticOrParent(security, m, args); 
195: 
      } catch(InvocationTargetException e) { 
196: 
       throw e.getTargetException(); 
197: 
      } 
198: 
     } 
199: 

200: 
    } 

로 이동하는 제 1 논리의 결론이다 : 필요한 안전 $ 보안 내부 클래스를 구현하는 어떤 클래스가 없습니다. 그러나 가장 확실하게 하위 클래스이므로이 오류를 어떻게 해결할 수 있는지 궁금합니다.

디버깅 세션은 classes.get (0)에 @With 주석이있는 클래스가 포함되어 있음을 알게됩니다. 따라서 null 포인터 예외는 @With (SecureController)가 포함 된 클래스 내에서 발생해야합니다. 하지만 클래스를 그냥 그대로 두었습니다. 이제 With 주석 내에서 참조를 편집했습니다.

내 생각에 어떻게 든 클래스 구현 내에 널 포인터가 있습니다. 하지만 아무런 참조 없이도 기본 동작을 구현하더라도 nullpointerexception을 생성합니다.

편집 : 이 오류의 원인을 발견했지만 '이유'가 확실하지 않습니다.

flash.put("url", request.url); 

왜 실패 않습니다 이 라인은 SecureController $ 보안의 서브 클래스에서 인증합니다 (...) 메소드의 구현에서 발견된다?

나는이 상황을 재현하기가 어려울 수 있음을 알고 있지만, 누군가 이미 동일한 문제를 경험했는지 궁금합니다.

지금까지 많은 Play 관련 주제에 대한 도움을 제공해 주셔서 감사합니다.

+0

컨트롤러가 어디에서 호출 되었습니까? 제안 사항을 찾고 싶을 때 요청 개체가 필요하지 않다는 느낌이 들었습니까? – Jasper

+1

이상하게도, 1.1.1의 보안 모듈 코드를 읽었고 동일한 코드를 가지고 있는지 궁금합니다.) ... 보안 모듈을 테스트하려면 어떻게해야합니까? 코드 내에서 수정 한 사항이 있습니까? 당신은 전체 스택 트레이스를 가지고 있습니까, 그것은 유익 할 것입니다 ... 안부 – mandubian

+0

@mandubian anwser에 감사드립니다. 위의 게시물에서 말했듯이, 나는 보안 모듈을 내 자신의 whishes로 커스터마이징하고있다. 그들은 나를 그렇게 권고했다. 그래서 나는했다 : membased-db에서 새로운 사용자를 생성하는 작은 .yml로 테스트하고있다. 이제 솔루션을 구현 했으므로 (내 게시물의 편집 참조) 오류를 재현 할 수없는 것 같습니다. 내 생각 엔 어딘가에 request.url 객체를 참조했는데 그 당시 null이었습니다. 나는 여기저기서 response.getCurrent(). getHeader ("url")를 사용해야한다고 읽었습니다. 이 올바른지? – Jasper

답변

0

Scope.Flash 클래스는 null 값을 저장할 수 없습니다. 아마도 수정하지 않은 다른 곳에서 request.url을 설정하지 않았습니까?

관련 문제