특수 문자 (ö, ä. ñ, ..)를 입력 할 때 h : commandbutton을 통해 POST 된 값에 문제가 있습니다. 값이 ajax 요청 (예 : 값의 변경 리스너 또는 a4j : commandbutton)을 통해 제출되면 모든 것이 작동합니다. 그러나 값이 h : commandbutton을 통해 제출되면 수신 된 값이 왜곡됩니다.JBoss 7의 JSF 2에서 POST 요청의 인코딩
article written by BalusC에 따라 모든 것을 설정하려고했습니다.
<property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
<property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
추가 요청의 문자 인코딩을 설정하는 필터 :
나는 보스 'standalone.xml의 URI의 enconding을 설정했습니다. 그러나 이것은 아무것도 변경하지 않습니다. 매개 변수가 param 맵을 읽는다면 (인코딩을 설정하기 전이나 후에) 엉망이됩니다.
내가 놓친 다른 항목이 있습니까?
JBoss 7.1.0 및 7.1.1 및 richfaces 4.1.0을 사용해 보았습니다.
는편집 : 필터 문제처럼 (주석에서 요구로) ExternalContext # getRequestCharacterEncoding()는 콩 액션 메소드에서 UTF-8을 반환하더라도
, 그것은 보인다. 폼이 h : commandButton을 통해 제출되면 request.getCharacterEncoding()
은 내가 추가 한 UTF 필터의 doFilter() 메서드 시작 부분에서 null을 반환합니다. 그러나 request.parametersParsed
은 이미 사실입니다.
값이 ajax를 통해 제출 된 경우 request.getCharacterEncoding()
은 이미 UTF-8입니다.
인코딩이 다르게 설정되어 있고 다른 일부 필터가 이미 매개 변수를 구문 분석 한 것처럼 보입니다. request.context.filterConfigs
의 유일한 필터는 org.jboss.weld.servlet.ConversationPropagationFilter
입니다. Plus Picketlink는 이미이 시점에서 매개 변수를 읽었을 것입니다.
편집 2 :이 thread in the PL forum에서 설명하고있는 바와 같이 이 Picketlink에서 버그가 수 있도록 보인다. 관련 PL issue도 확인하십시오.
예, Facelets를 사용하고 있습니다. Chrome은 양식이있는 페이지의 응답 헤더에 대해 "Content-Type : text/html; charset = UTF-8"이라고 말합니다. – Markus
오케이. 그 문자 인코딩 필터가 체인의 맨 처음 필터입니까? 다른 필터가'getParameter()'를 호출 한 경우 그것을 설정하기에는 너무 늦었을 것이다. 한편 디버깅하는 동안,'ExternalContext # getRequestCharacterEncoding()'은 빈의 액션 메소드에서 그것을 출력 할 때 무엇을 말합니까? – BalusC
이것은 web.xml의 유일한 필터이지만 인증을 위해 Picketlink를 사용합니다. 이것은 아마도 요청에서 매개 변수를 읽습니다.그러나 ExternalContext # getRequestCharacterEncoding()은 필터가 활성 상태인지 여부에 관계없이 utf-8을 반환합니다. – Markus