Wicket은 wicket : 메시지를 사용하여 https://cwiki.apache.org/confluence/display/WICKET/Everything+about+Wicket+internationalization에 설명 된 링크 등의 HTML 요소가 포함 된 복잡한 변환 가능한 메시지를 지원합니다. 예컨대 :Apache Wicket : HTML이 포함 된 메시지의 동적 키
<wicket:message key="messageKey">
<a wicket:id="link"><wicket:message key="linkLabel"></wicket:message></a>
</wicket:message>
및 특성 :
messageKey=Click on ${link}
및 Java
add(new BookmarkablePage<Void>("link", SomePage.class);
이 좋은 작품에서, 그러나 메시지 키는 HTML에서 하드 코딩되어있다.
필자의 경우 Java에서 메시지 키를 동적으로 결정해야합니다. 문자열 매개 변수를 사용하는 일반 메시지의 경우 키를 매개 변수로 사용하는 Label
및 StringResourceModel
을 사용하여이를 수행 할 수 있습니다. 그러나 Wicket 구성 요소를 매개 변수로 포함하는 메시지에 대해 동일한 작업을 수행하려면 어떻게해야합니까? 나는 마크 업이 다음과 같이 보일 것이라고 생각한다.
<span wicket:id="messageId">
<a wicket:id="link"><wicket:message key="linkLabel"></wicket:message></a>
<span>
그러나 Java는 무엇이겠습니까? Label
에는 어린이가 없습니다. :(
=== 업데이트 ===이 개인 정적입니다 때문에, 내가 직접 사용할 수 없습니다하지만 난 공용 클래스에 코드를 붙여 복사 할 경우와를 조정할. 흥미로운 보이는 개찰구 클래스 org.apache.wicket.markup.resolver.WicketMessageResolver.MessageContainer
있다
구성 요소 계층 구조와 관련된 몇 가지, 나는 해결책에 가까워지고있어하지만 꽤 해키 청소기 해결책이 있습니까
미안 내 예를 혼동 될 수 있습니다. 내가 뭘 하려는지 Wicket 구성 요소 (bookmarkable 링크, 아약스 링크 등) 및 동적 메시지 키를 매개 변수가있는 번역 가능한 리소스가 있습니다. wicket : message 태그는 모든 종류의 Wicket 구성 요소를 중첩 할 수 있으므로 훌륭하게 작동하지만 메시지 키는 HTML에 입력해야하므로 동적으로 선택할 수 없습니다. –
Localizer 클래스를 사용하여 고유 한 구성 요소를 구성하여 i18n 값을 가져올 수 있습니다. localizer를 얻으려면 : application.getResourceSettings(). getLocalizer(). 그런 다음 적절하다고 생각되면 getString() 메소드를 사용하십시오. 나는 당신의 문제를 이해하기가 어렵다. 샘플 출력을 제공하고 i18n의 일부분을 표시하고 다른 구성 요소를 표시하십시오. –
나는 현재 사용중인 답변을 추가했습니다. 더 나은 해결책을 생각하면 저에게 알려주십시오! 감사. –