2010-03-29 3 views
2

내가 가지고 facelet 페이지 내에서 follwing을 코드 :Facelet 포맷 변환하지 않습니다 통화 제대로

<h:inputNumber value="bean.property"> 
    <f:convertNumber type="currency" /> 
</h:inputNumber 

빈 속성에서 제공되는 입력 필드 내부 디폴트 값의 종류가있을 수 있기 때문에 컨버터입니다 . 모든 것이 올바르게 렌더링됩니다. 입력 필드 내부의 값은 "€"문자 (예 : "1.453 €"로 렌더링 내가 양식을 제출하면

는 오류까지가 온다 :. 영어로

"nameOfInputField" konnte nicht als ein Geldbetrag erkannt werden '304,00 â¬' 

가 어떤 같다 :

"nameOfInputField" could not be regognized as an amount of money '304,00 â¬' 

하면 "€"문자를 확인해주세요.이 양식을 제출하기 전에 올바르게 렌더링 동안. "â¬"로 인쇄 될 것 같다, 지금은 오류 내부 "â¬"처럼 보인다 메시지 및 입력 필드 안에 입력하십시오.

모든 페이지는 UTF-8로 인코딩됩니다.

이 오류의 이유는 무엇입니까? 어떻게 해결할 수 있습니까? 미리

감사

답변

1

â¬

이 잘못 ISO-8859을 사용하여 디코딩되어 원래의 소스 UTF-8에서 € 전형적이다.

System.out.println(new String("€".getBytes("UTF-8"), "ISO-8859-1")); 

는 모든 페이지가 UTF-8 인코딩 : 여기에 있음을 보여줍니다 작은 조각이다.

당신은 가능성에 대한 응답 인코딩을 얘기. 인코딩을 요청으로 설정해야합니다.

GET 요청 (기본적으로 URI 인코딩)에 대한 인코딩을 설정하려면 애플리케이션 서버 관련 설명서를 참조해야합니다. 어느 것을 사용하고 있는지 불분명하기 때문에 다음은 Tomcat 대상 예 : <Connector URIEncoding="UTF-8" />입니다. POST 요청에 대한 인코딩을 설정하려면 null 인 경우 request.setCharacterEncoding("UTF-8") 인 간단한 필터를 만들어야합니다. 자세한 배경 정보 및 힌트는 this article에서 찾을 수 있습니다.

+0

Tomcat을 사용하고 있습니다. 나는 필터 방식을 사용했다. 잘 했어. 감사. 너는 진짜로 일이 어떻게 작동하는지 진짜로 알고있다! – c0d3x

+1

@ c0d3x 효과가있는 답변을 수락하는 것 외에도, 그것을 upvote 할 수 있습니다. – Bozho

+0

그 일을하기 위해 스스로 등록해야합니다. 나는 다음 일이나 그 사이에 그렇게 할 것입니다. – c0d3x

1

넣어 당신의 Facelets의 페이지의이 ontop의 :

<?xml version="1.0" encoding="UTF-8" ?> 

는 그것은 Facelets의 파서를 지시합니다.

+0

아 그래, 나는 항상 Facelets 부분을 간과/잊어 버렸다. 하지만 당신 말이 맞아, +1. – BalusC

+0

답장을 보내 주셔서 감사합니다.하지만 xml 태그는 모든 facelet 페이지 위에 있습니다. – c0d3x

+0

@ c0d3x 응답 인코딩이 무엇인지 확인하십시오 (브라우저의 "페이지 정보"사용) – Bozho