2012-03-13 3 views
1

하나의 간단한 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의 버그 인 것 같습니다! breakNoRouteFoundException로 연결

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이라는 버그 보고서를 제출했습니다.

답변

0

오류 메시지를 확인, 그것은 말한다 :

No route able to invoke action PublicController.sitemap with arguments {} 

당신의 경로에 당신이 대신 일부 매개 변수를 수신 PublicController.sitemap()에 항목이 있습니다

GET /sitemap PublicController.sitemap() 

같은 부족 파일을 의미 즉, 문제를 설명 할 수 있습니다. 업데이트에 대한

편집 :

이 경우 당신이 Maenu 그들에 언급과 같은 문제가 다른 형식을 가지고있다, TEH 의견을 확인하지 않았다. 로봇의 콘텐츠 유형은 "text/plain"이며 "text/xml"의 사이트 맵은 호환되지 않습니다.

방법은 경로에서 형식을 제거하고 사용하여 컨트롤러를 설정하려고하는 것입니다 :

renderText(...) 
renderXml(...) 

documentation를 참조하십시오.

+0

PublicController.sitemap()은 매개 변수를 사용하지 않습니다. 이상한 점은 템플릿의 파일 확장자를 포함하여 "txt"인 모든 것을 "xml"로 변경하면 템플릿이 유효한 XML이 아니더라도 작동한다는 것입니다. –

+0

하지만 경로 파일에 'PublicController.sitemap()'이 선언되어 있습니까? –

+0

예 (질문을 업데이트했습니다). 그러나 이제는 경로의 형식을 명시 적으로 설정해야 할 수도 있습니다. 왜냐하면 나는 모든 "txt"를 "html"로 바꿀 때도 작동하지 않기 때문이다. 그래서 나는 로봇과 사이트 맵 형식이 모두 XML이기 때문에 "xml"과 만 작동한다고 생각합니다.따라서 이것이 라우터가 가진 문제라고 생각합니다. 왜냐하면 이것이 작동하지 않아야하는 이유가 보이지 않기 때문입니다. 나는 또한 "안전하다 (secure)"는 문제가있을 수 있다는 것을 배제했다. –

관련 문제