JPA와의 서블릿 문자 인코딩 문제
-
26-12-2019 - |
문제
OK, 3 7 시간 ~ 3 시간 나는 포기하고, 나는 도움을 요청해야합니다. Linux에서 개발하는 데 사용했던 모든 것이 쉽습니다. 이제는 Windows를 사용하고 있으며 정확한 로케일 설정이 작동하지 않는 것과 같은 쉬운 일을 사용합니다.
단순 JSP가 형식으로 만들었습니다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<form action="save-user" method="post">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
<input type="submit" value="Save">
</form>
.
및 서블릿 :
String name = request.getParameter("name");
String email = request.getParameter("email");
.
Leoš 대신에 LeoÅ을받습니다. 나는 Wildfly 8.0rc1, Windows 8 체코, 파이어 폭스를 사용합니다.
이미 시도한 것 :
- request.SetcharacterEncoding ( "UTF-8"); 먼저 읽기 전에 매개 변수
- request.SetchAracterEncoding이있는 필터 ( "UTF-8");
- JVM 속성 -DFILE.Encoding= UTF-8
- 전쟁에서 표준 Jee 스택 항아리 제거
- 전쟁 포장 수정
- 웹 및 EJB 모듈로 프로젝트 분할
JPA Entity / DAO가 배포 될 때 Diacritics가 흔들립니다. Servlet에서 엔티티를 주석 처리하고 WAR에서 JPA 엔티티를 제거한 경우 (현재 WEB-INF / LIB에서 oauthloginejb.jar를 제거하십시오) 올바른 인코딩을받습니다. 이 EJB를 추가하면 다시 실패합니다. JBoss / Wildfly 버그인가요?
나는 완전한 출처를 제공 할 수 있습니다 : https : // drive. google.com/file/d/0b-adlc5kthqdwtdyoewxouptveu/edit?usp=sharing 운영 할 준비가되어 있으므로 체코 문자를 입력 할 필요조차하지 않습니다. 고맙습니다
해결책
Marko from Wildfly Dev 메일 링리스트는이 결함으로 가리켰다 : "nofollow"> https : //issues.jboss.org / browse / cdi-411 및이 해결 방법 : http : //weld.cdi-spec.org/documentation/#3/a>
<filter>
<filter-name>EncodingFilter</filter-name>
<filter-class>cz.literak.demo.oauth.servlets.EncodingFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>EncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CDI Conversation Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
. 다른 팁
요청 입력에서 먼저 읽기 전에 request.setCharacterEncoding("UTF-8")
를 호출해야합니다.매개 변수는 서블릿에서 인코딩을 설정하기 전에 필터에서 읽을 수 있습니다.OAuthLoginEJB.jar
또는 다른 종속성에 필터가 있거나 먼저 매개 변수를 읽을 수 있습니까?일반적으로 이것은 디버깅을위한 몇 가지 매개 변수입니다 ... Servlet API 3.0, 서블릿 및 필터는 주석으로 등록 할 수 있으므로 빈 web.xml
에도 불구하고 일부 필터를 등록 할 수 있습니다.