하나의 간단한 txt 템플릿에서 정말 이상한 오류가 발생합니다. XML로 제공 할 때 오류가 없기 때문에 오류는 템플리트 자체 또는 관련 경로와 아무 관련이 없습니다. Play의 버그입니까? (1.2.4를 사용하고 있습니까?).txt에서 오류가 발생했습니다. Play! 템플릿, 작동합니다 .xml
GET /robots.txt PublicController.robots(format:'txt')
GET /sitemap.xml PublicController.sitemap(format:'xml')
:
Sitemap: @@{PublicController.sitemap()}
이 연관된 경로이다 :이 robots.txt에의 템플릿
No route found
No route able to invoke action PublicController.sitemap with arguments {} was found.
----------
In /app/views/PublicController/robots.txt (around line 1)
> 1: Sitemap: @@{PublicController.sitemap()}
This exception has been logged with id 69kj6fdbk
이다
이
는 /robots.txt와 요청 오류 메시지 인편집 :
좋아, 이것은 Play의 버그 인 것 같습니다! break
가 NoRouteFoundException
로 연결
if (!(Http.Request.current() == null ? "" : Http.Request.current().format).equals(route.staticArgs.get("format"))) {
allRequiredArgsAreHere = false;
break;
}
continue;
: I 라인 (461)에서 ActionDefinition Router.reverse(String, Map<String, Object>)
에 다음을 발견했다. 역방향 라우팅 중에 요청 형식을 확인해야하는 이유가 표시되지 않습니다. 리버스 라우팅은 링크를 생성하는 데 사용되며 응답이나 유사한 것은 아닙니다. Controller.redirect(String, boolean, Object...)
은 reverse
을 사용하며 HTTP 리디렉션이 콘텐츠 형식이나 형식을 허용하는지 여부와 관련하여이 동작에 의존 할 수 있으므로 리디렉션에 부작용이있을 수 있습니다. 어쨌든, 주요 플레이! 테스트는 내 플레이 포크에서 통과합니다.
나는 here이라는 버그 보고서를 제출했습니다.
PublicController.sitemap()은 매개 변수를 사용하지 않습니다. 이상한 점은 템플릿의 파일 확장자를 포함하여 "txt"인 모든 것을 "xml"로 변경하면 템플릿이 유효한 XML이 아니더라도 작동한다는 것입니다. –
하지만 경로 파일에 'PublicController.sitemap()'이 선언되어 있습니까? –
예 (질문을 업데이트했습니다). 그러나 이제는 경로의 형식을 명시 적으로 설정해야 할 수도 있습니다. 왜냐하면 나는 모든 "txt"를 "html"로 바꿀 때도 작동하지 않기 때문이다. 그래서 나는 로봇과 사이트 맵 형식이 모두 XML이기 때문에 "xml"과 만 작동한다고 생각합니다.따라서 이것이 라우터가 가진 문제라고 생각합니다. 왜냐하면 이것이 작동하지 않아야하는 이유가 보이지 않기 때문입니다. 나는 또한 "안전하다 (secure)"는 문제가있을 수 있다는 것을 배제했다. –