2011-12-16 2 views
1

사이트 브릭을 사용하지 않는 사람들을 포함한 모든 서블릿의 데이터에서 입력 스트림을 사용하는 버그를 수정하려고합니다.필터의 http 요청에서 게시 매개 변수를 가져 오지 만 서블릿의 입력 스트림을 그대로 유지할 수 있습니까?

HiddenMethodFilter.java 라인 : 66

String methodName = httpRequest.getParameter(this.hiddenFieldName); 

http://code.google.com/p/google-sitebricks/issues/detail?id=45

답변

3

예 당신이 당신의 자신의 요청을 제공 할 수 있습니다 참조 Modify request parameter with servlet filter를 참조하십시오.

또한 잘못된 사이트 브릭 필터를 확장해도 체인을 연결하는 것보다 쉬울 수도 있습니다.

+0

새로운 요청은 POST의 중복 된 내용을 몇 바이트 배열의 형태로 캡슐화해야합니다. InputStream, 맞습니까? –

+0

무한대의 배열을 메모리에 복사 할 수 있기 때문에 약간 무서운 것 같습니다. –

+0

아니요, 'HttpServletRequestWrapper'가 원래 요청을 래핑합니다. –

-2

서블릿 컨테이너는 요청 매개 변수를 제공하기 전에 InputStream의 데이터를 읽고 소비해야하므로 분명히 그렇지 않습니다. 다른 방법으로는 InputStream을 먼저 사용하면 나중에 컨테이너가 요청 매개 변수에 액세스하지 못하게됩니다.

사이트 브릭과 관련된 URL에 대해서만 HiddenMethodFilter를 구성하라는 제안 된 링크 문제의 제안을 사용하여 버그를 해결할 수없는 이유는 무엇입니까?

+0

Sitebricks는 어노테이션을 사용하여 정보가 필터에 전달되기 어려울 정도로 URL을 결정합니다. –

+0

왜 getParameter를 호출하기 전에 필터의 URL을 검사 할 수 없으므로 HttpServletRequest는 SiteBricks가 처리하지 않는 URL에 대한 요청에 영향을받지 않습니다. – jarnbjo

+0

sitebricks에서 처리하는 URL 목록을 필터에 삽입하는 것이 가능할 수도 있지만 아직 수행 할 방법을 찾지 못했습니다. 추신 : 나는 당신의 답변에 투표하지 않았으며, 이것은 이상적인 해결책입니다. –