2011-08-31 7 views
4

spring-mvc 3.0을 사용하는 응용 프로그램이 있습니다. 컨트롤러는 다음과 같이 구성됩니다Spring-mvc의 post 매개 변수에 특수 문자 처리

@RequestMapping(value = "/update", method = RequestMethod.POST) 
public ModelAndView updateValues(
@RequestParam("einvoiceId") String id){ 
...} 

특수 문자가 포함 된 아이디 게시 | 문자열 ID가 포함됩니다, URL 인코딩 UTF-8 (ID = 000025D26A01 % 7C2014174) (이 경우 파이프를) % 7C. 나는 spring-mvc가 매개 변수를 디코딩 할 것을 기대하고 있었다. 나는 이것을 사용하여이 문제를 해결할 수 있다는 것을 잘 알고 있습니다. 많은 수의 컨트롤러가 있기 때문에이 프레임 워크가 자동으로 수행하고 싶습니다. Tomcat 커넥터를 URIEncoding="UTF-8"으로 구성하고 CharacterEncodingFilter으로 구성했습니다. 그러나 이해하므로 GET 요청에만 영향을 미칩니다. spring-mvc url을 사용하여 게시 매개 변수를 디코딩 할 수있는 방법에 대한 아이디어가 있습니까?

답변

1

http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q3 이 페이지는 내가 그랬던 것처럼 당신이 같은 문제가 발생 믿고 CharacterEncodingFilter는 POST가

+0

답변 해 주셔서 감사합니다. 그러나 나는 이미'org.springframework.web.filter.CharacterEncodingFilter'를 사용하고 있습니다. 모든 것은'request.setCharacterEncoding'입니다. 내 요청에 이미 UTF-8이 있지만 특수 문자를 % 7C로 변환 할 수 없습니다. – jakobklamra

+0

아마도 여기를보세요 http://tech.top21.de/techblog/ 20100421-solve-problems-with-request-parameter-encoding.html; jsessionid = DAC7E8A568ED4EF9EB181BCDC785B010 – frytaz

+1

고마워요. 문제가 해결되어서 나쁘다. Chromes Rest Console을 사용하여 테스트 해 보았습니다. 이 플러그인은 매개 변수를 자동으로 인코딩합니다. 이는 내 매개 변수가 이중으로 인코딩 된 곳을 의미합니다. 내 잘못이야. 내 설정이 올바른지 확인합니다. 모든 의견에 감사드립니다. – jakobklamra

0

매개 변수 변경할 수 있습니다 말한다. 대신 @PathVariable을 사용해보세요.

@PathVariable is to obtain some placeholder from the uri (Spring call it an URI Template) — see Spring Reference Chapter 16.3.2.2 URI Template Patterns 

URL을 변경해야 매개 변수 'id'를 입력하지 않아도됩니다. "/ update/000025D26A01 % 7C2014174". 내 문제에 대한 해결책을 찾은 곳에서 더 많은 정보를 찾을 수 있습니다. @RequestParam vs @PathVariable