나는 최신 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 관련 주제에 대한 도움을 제공해 주셔서 감사합니다.
컨트롤러가 어디에서 호출 되었습니까? 제안 사항을 찾고 싶을 때 요청 개체가 필요하지 않다는 느낌이 들었습니까? – Jasper
이상하게도, 1.1.1의 보안 모듈 코드를 읽었고 동일한 코드를 가지고 있는지 궁금합니다.) ... 보안 모듈을 테스트하려면 어떻게해야합니까? 코드 내에서 수정 한 사항이 있습니까? 당신은 전체 스택 트레이스를 가지고 있습니까, 그것은 유익 할 것입니다 ... 안부 – mandubian
@mandubian anwser에 감사드립니다. 위의 게시물에서 말했듯이, 나는 보안 모듈을 내 자신의 whishes로 커스터마이징하고있다. 그들은 나를 그렇게 권고했다. 그래서 나는했다 : membased-db에서 새로운 사용자를 생성하는 작은 .yml로 테스트하고있다. 이제 솔루션을 구현 했으므로 (내 게시물의 편집 참조) 오류를 재현 할 수없는 것 같습니다. 내 생각 엔 어딘가에 request.url 객체를 참조했는데 그 당시 null이었습니다. 나는 여기저기서 response.getCurrent(). getHeader ("url")를 사용해야한다고 읽었습니다. 이 올바른지? – Jasper