Enum을 사용하여 개찰 속성 파일에서 문자열을 선택하십시오
-
18-09-2019 - |
문제
레이블의 모델이 열거적인 값인 개찰 패널에 레이블을 추가하고 싶습니다. 해당 열거의 값을 기반으로 페이지의 속성 파일에서 가져온 다른 메시지를 표시하고 싶습니다.
예를 들어, 열거는 다음과 같습니다.
public enum ApprovalType { UNAPPROVED, APPROVED, BLOCKED };
이 열거가 모델로서 패널에 레이블을 쉽게 추가 할 수 있습니다.
add(new Label("approval", new Model(ApprovalType.APPROVED)));
그러나 이것은 단순히 승인되지 않은, 승인 또는 차단 된 출력입니다. 이 열거의 값에 따라 선택된 현지화 된 메시지를 출력하고 싶습니다.
이 속성 파일이 있다면이 메시지를 출력하는 가장 좋은 방법은 무엇입니까?
UNAPPROVED=Your membership is currently pending approval
APPROVED=Your membership has been approved
BLOCKED=You have been blocked from membership
나는 다음과 같이 작동 할 수 있습니다.
add(new Label("approval", new ResourceModel(ApprovalType.APPROVED.name());
그러나 문제는 ResourceModel이 문자열 (Resource Key) 만 허용한다는 것입니다. 모델에서 리소스 키의 값을 자동으로 가져오고 싶습니다 (선호하는 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을 사용하는 단순성을 사용하지 않습니다.
아이디어?
해결책
이 'LL이 작동하는지 확실하지 않지만, 열거의 가치를 취하고 ResourceModel 값을 반환하는 자신의 열거 클래스를 작성해 볼 수도 있습니다.
위의 내용이 충분히 명확하지 않으면 자세히 설명하려고 노력할 것입니다.
제휴하지 않습니다 StackOverflow