2012-08-02 2 views
0

Im DropDownChoice에 문제가 있습니다. 내가 대학 등의 문자열 proprerty 호출 내가 초등학교의 코드 (예 : 1을 넣고 싶다 "studyTitleCode", 2와 뽀조이 다음Wicket - 열거 형에서 기본형으로의 DropDownChoice

public enum StudyTitle { 

    NONE(null,null),ELEMENTARY("1","Elementary"),COLLEGE("2","College"); 

    private String code; 
    private String description; 

    private StudyTitle(String code, String description){ 
     setCode(code); 
     setDescription(description); 
    } 

    [setter and getter] 

} 

: 내가 좋아하는 학교 타이틀의 목록을 열거 있습니다 ...).

DropDownChoice를 만들 때 Wicket을 사용하면 DropDownChoice 유형이 StudyTitle 인 경우 String 유형의 proprerty 모델을 가질 수 없습니다.

Ex. [열거 형의 ArrayList를로 listOfStudyTitle을 구축]

DropDownChoice<String> studyLevel = new DropDownChoice<String>("id",new PropertyModel<String>(myPojo,"studyTitleCode"),listOfStudyTitle,new ChoiceRenderer<StudyTitle>("description","code")); 

은 개찰구이 모델의 속성에 열거 한 속성을 연결할 수 있도록하는 방법이 있습니까?

감사

답변

1

값 모델의 유형과 일치되어야하는 AbstractSingleSelectChoice에 대한 선택 옵션을 제공합니다. 내가 알고있는 DropDownChoice의 유일한 관련 구성 옵션은 열거 형 값이 렌더링되는 방식 (기본 호출 toString())을 설정할 수있는 IChoiceRenderer입니다.

public enum TestEnum { 
    ONE ("ONE"), 
    TWO ("TWO"), 
    THREE ("THREE"); 

    private String value; 

    TestEnum(String value) { 
     this.value = value; 
    } 

    public String getValue() { 
     return value; 
    } 

    public static List<String> getStringValues() 
    { 
     List<String> stringValues = new ArrayList<String>(); 
     for (TestEnum test : values()) { 
      stringValues.add(test.getValue()); 
     } 

     return stringValues; 
    } 
} 

@Override 
protected void onInitialize() { 
    super.onInitialize(); 

    IModel<String> myStringValueModel = new Model<String>(); 
    add(new DropDownChoice<String>("id", myStringValueModel, TestEnum.getStringValues())); 
} 
+0

귀하의 솔루션은 좋다하지만 난 얻기 원하는 문자열이 다른 :

하나의 옵션은 대신 당신의 선택 모델에 대한 열거 인스턴스 자체를 사용하는 열거를 사용할 수있는 문자열 속성을 부여 할 것 내가 보여주고 싶은 문자열에서. 내 Enum과 함께 사용자가 "description"속성을보고 싶지만 "code"를 모델 내부의 값으로 사용하고 싶습니다. – MrMime

+2

모델의 값을 일부 표시 값으로 변경해야하는 경우 DropDownChoice # setChoiceRenderer (IChoiceRenderer)를 사용할 수 있습니다. IChoiceRenderer에는 getDisplayValue (T)라는 추상 메서드가 있습니다.이 메서드는 매개 변수로 모델 값만 받아들입니다. 거기에서 표시 값에 대한 enum을 쿼리하십시오. –

관련 문제