2017-04-10 9 views
0

내가i18n 레이블과 함께 현명한 디스플레이 컨텍스트를 사용할 수 있습니까?

${'myproj.label' @i18n, format=[sighltyObj.field1], context='text'} 

의도로 내 프로젝트에서 코드를보고하고하는 것은 국제화 텍스트에 변수를 전달 + 안전하게 문자를 인코딩합니다. i18n 번역과 함께 디스플레이 컨텍스트를 사용할 수 있습니까? field1 = "Hello % 20World"로 테스트했을 때, 텍스트를 그대로 렌더링하는 것이 아닙니다. 인수를 변수로 i18n에 전달하면서 html 문자열을 인코딩하는 방법은 무엇입니까?

답변

0

HTL은 을 디코드하지 않습니다.의 텍스트는 format에 의해 반환됩니다.

그러나 모든 HTML

(HTL Specification Section 1.2.1 Display Context 소스) 인코딩 -

사용이 간단한 HTML 콘텐츠를 : 나는 혼란 디스플레이 컨텍스트에 대한 내용의 문서 text 다음에서 오는 생각 이것은이 문맥이 무엇이든을 해독 한 ㄴ다는 것을 의미하지 않는다, HTML 꼬리표를 암호로 고쳐 쓴다.

그래서 sighltyObj.field1 경우가 하지Hello World로 렌더링됩니다 Hello%20World하지만 Hello%20World로 당신은 이미 눈치.

디스플레이 컨텍스트 text 주어진 텍스트의 모든 HTML 태그가 텍스트로 "밀입국 할 수 없도록"코드 삽입을 참조하십시오. 그래서 예를 들면

:

${'<p>This is my text</p>' @ context='text'}

는 다음과 같은 HTML p 태그 인코딩 얼마나

&lt;p&gt;This is my text&lt;/p&gt;

을 생성합니다 :

<p>는되었다및 </p>&lt;/p&gt이되었습니다.

에서 field1에 대한 게터 당신의 sighltyObjHello%20WorldHello World를가되도록 디코딩을해야 할 것입니다. https://stackoverflow.com/a/6138183/190823

String result = java.net.URLDecoder.decode(url, "UTF-8");

+0

죄송합니다 @Jens, 내 데이터 사전에서, 내가 정의했다 중괄호 :이 작업을 수행하는 방법을 보여줍니다 유래에 대한 대답은 이미 있습니다. 문제는 field1의 값이 'Hello % 20World'라고 말할 때 'Hello World'로 렌더링하려고한다는 것입니다. 그러나 'Hello % 20World'로만 인코딩 된 값으로 인쇄됩니다. i18n과 함께 '텍스트'디스플레이 컨텍스트를 사용하여 레이블 텍스트를 포맷하고 디코딩 할 수 있습니까? –

+0

@SaravanaPrakash 이제 질문을받습니다. 나는 나의 대답을 업데이트했다. 나는 그것이 도움이되기를 바랍니다. – Jens

+1

@Jens에 대한 자세한 설명 주셔서 감사합니다. –