문제

레이블의 모델이 열거적인 값인 개찰 패널에 레이블을 추가하고 싶습니다. 해당 열거의 값을 기반으로 페이지의 속성 파일에서 가져온 다른 메시지를 표시하고 싶습니다.

예를 들어, 열거는 다음과 같습니다.

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 값을 반환하는 자신의 열거 클래스를 작성해 볼 수도 있습니다.

위의 내용이 충분히 명확하지 않으면 자세히 설명하려고 노력할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top