2012-09-09 4 views
0

의 RadioChoice에 IModel 해당 두 부울 필드가 나는 두 개의 부울 필드와 사용자 개체가 있습니다. 는 HTML 부분에서지도 개찰구

발췌문 : 개찰구

public class UserForm extends Form<Users> { 
    public UserForm(String id, Users user) { 
    super(id, new CompoundPropertyModel<Users>(user)); 
    RadioChoice rChoice = new RadioChoice<Long>("community_settings", choices, renderer); 
    add(rChoice); 
    } 
} 

라디오와

<input type="radio" wicket:id="community_settings"/> 

자바 양식 내 문제는 지금은 물론 그 I 인은 사용자의 어떤 속성 community_settings이 개체 없다. 이 두 부울 값을 UI의 라디오 선택에 매핑하기 만하면됩니다.

어떻게 내가 Wicket에서 그것을 할 수 있습니까?

감사합니다. 개인적으로 내가 Enum을 사용, BTW

RadioChoice<Long> rChoice = new RadioChoice<Long>("community_settings", new IModel<Long>() { 
    public Long getObject() { 
     if (user.getShowContactData() && user.getShowContactDataToContacts()) { 
      return 1L; 
     } 
     // ... 
    } 

    public void setObject(Long choice) { 
     if (choice == 1) { 
      user.setShowContactData(true); 
      user.setShowContactDataToContacts(true); 
     } else if (choice == 2) { 
      // ... 
     } 
    } 

    public void detach() { 
    } 
}, choices); 

, 그래서 전혀 특별한지도가 없습니다 : 세바스찬

+0

Wicket 6.0.0 Beta3 (최종 ​​버전과 유사) –

+0

'RadioChoice'는'SingleSelecChoice'를 확장 한 것으로 단일 필드 만 설정할 수 있음을 의미합니다. 예를 들어 선택 목록을 가질 수 있으며 그 중 하나를 선택하려고합니다. http://wicket.apache.org/apidocs/1.4/org/apache/wicket/markup/html/form/RadioChoice.html을 참조하십시오. 여러 필드를 업데이트하려면'Form.onSubmit()'을 덮어 쓰고 거기에서 처리하십시오. 아마 더 나은 해결책이있을 것입니다. –

+0

문제는 다중 선택이 아니거나 아닙니다. 문제는 그 부울 값 중 하나만이 동시에 참일 수 있다는 것입니다. 당신은 자연스럽게 라디오 박스를 사용하여 그것을 해결할 것입니다. –

답변

3

당신은 데이터를 매핑 모델이 필요합니다. 당신이 조금 "낮은 수준"을하고있는 것처럼 보입니다. 그리고 개찰구 모델 물건은 정말로 성가신 느낌이들 것입니다. 원한다면 기본 유형 대신 객체를 사용하십시오.

+0

감사합니다 Christoph. 귀하의 추천에 따라 문제점을 해결할 수있었습니다. Model을 다소 안정적이고 현재 리팩터링에 포함시키지 않으면 모델을 쉽게 수정할 수 없습니다. 우리가하는 일에 관심이 있다면 "Apache OpenMeetings"에 가입하십시오. 우리는 현재 Wicket을 사용하여 Flash에서 HTML로 리펙토링합니다. –