라벨의 모델이 enum 값인 곳의 wicket 패널에 레이블을 추가하고 싶습니다. 해당 열거 형 값을 기반으로 페이지의 속성 파일에서 가져온 다른 메시지를 표시하고 싶습니다. 이 승인되지 않은 단순히 출력 것이다, 그러나wicket 속성 파일에서 문자열을 선택하려면 enum을 사용하십시오.
add(new Label("approval", new Model(ApprovalType.APPROVED)));
: 나는 쉽게 자사의 모델로이 열거를 가지고 패널에 레이블을 추가 할 수 있습니다
public enum ApprovalType { UNAPPROVED, APPROVED, BLOCKED };
:
예를 들어, 여기에 열거입니다 APPROVED 또는 BLOCKED. 이 열거 형 값에 따라 선택된 지역화 된 메시지를 출력하고 싶습니다.
이 속성 파일이있는 경우 이러한 메시지를 출력하는 가장 좋은 방법은 무엇입니까?
add(new Label("approval", new ResourceModel(ApprovalType.APPROVED.name());
을 그러나 문제는 ResourceModel는 문자열 (자원 키)를 받아들이는 것입니다 :
UNAPPROVED=Your membership is currently pending approval
APPROVED=Your membership has been approved
BLOCKED=You have been blocked from membership
나는이 같은 작업을 얻을 수 있습니다. 리소스 키의 값을 모델 (자동으로 CompoundPropertyModel)에서 가져오고 싶습니다. 즉, 나는이 일을하지 않으려 :
는Member member = (Member) getDefaultModelObject();
add(new Label("approval", new ResourceModel(member.getApproval().name())));
차라리 같은 것을 할 거라고 :
add(new EnumLabel("approval"); // assuming I have a CompoundPropertyModel
를 개찰구 함께 제공이 작업을 수행 구성 요소가 있습니까? 아니면 내 것을 쓸 필요가 있습니까?
add(new Label("approval", new StringResourceModel(
"${}",
new PropertyModel<ApprovalType>(getDefaultModel(),"approval")
)));
하지만이 CompoundPropertyModel 사용의 단순함을 이용하지 않고 여전히 지나치게 자세한 것, 그리고 :
마지막으로,이 또한 작동 발견했다.
아이디어가 있으십니까?
네, 아마도 올바른 방향 일 것입니다. 이 특정 문제를 해결하는 enum과 국제화를 사용하는 상세한 예제 (http://wicketbyexample.com/enums-internationalization-with-wicket/)를 발견했습니다. 그러나 해결책은 아주 장황하다, 나는 진짜로 더 가벼운 무언가를 찾고 있었다. EnumModel에 대해 자세히 설명해 주면 도움이 될 것입니다. – Tauren
당신이 언급 한 기사에서 언급 한 EnumPropertyModel은 제가 시도했을 때와 매우 비슷합니다. CompoundPropertyModel을 사용하여 단순화하거나 만들 수 없다고 확신합니까? 나는 이것이 가능하다면 Wicket의 내부 동작에 너무 익숙하지 않다. – Tim