getModelObject에 문제가 있습니다. 널 (null)을 리턴합니다. 사실 모델 컨셉은 나에게 분명하지 않습니다. 코드는 다음과 같습니다Wicket : getModelObject가 null을 반환합니다.
public class SpaceCheckListWindow extends WebPage {
private SpaceCheckListForm spaceCheckListForm;
private Page parentPage;
private ModalWindow modalWindow;
public SpaceCheckListWindow(Page parentPage, final ModalWindow modalWindow) {
this.parentPage = parentPage;
this.modalWindow = modalWindow;
String[] labels = new String[] {
"a",
"b",
"c",
"d",
"e",
"f"
};
List<ListMemeber> list = new ArrayList<ListMemeber>();
for(String label : labels) {
list.add(new ListMemeber(label));
}
addComponent(list);
}
private void addComponent(List<ListMemeber> list) {
spaceCheckListForm = new SpaceCheckListForm("form", list);
add(spaceCheckListForm);
}
private class SpaceCheckListForm extends Form {
private static final long serialVersionUID = 1L;
public SpaceCheckListForm(String id, final List<ListMemeber> list) {
super(id);
ListView listView = new ListView("listView", list) {
private static final long serialVersionUID = 1L;
@Override
protected void populateItem(ListItem listItem) {
ListMemeber member = (ListMemeber) listItem.getModelObject();
listItem.add(new Label("label", member.getLabel()));
listItem.add(new CheckBox("checkbox", new PropertyModel(member, "selected")));
}
};
listView.setReuseItems(true);
add(listView);
AjaxButton submitBtn = new AjaxButton("submitBtn", this) {
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form form) {
System.out.println(spaceCheckListForm.getModelObject());
modalWindow.close(target);
}
};
add(submitBtn);
}
}
private class ListMemeber implements Serializable {
private String label;
private Boolean selected = Boolean.FALSE;
public ListMemeber(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public Boolean getSelected() {
return selected;
}
public void setSelected(Boolean selected) {
this.selected = selected;
}
@Override
public String toString() {
return label + Boolean.toString(selected);
}
}
}
지금 온 클릭이 AjaxButton가 null가 반환된다. 나는 레이블과 해당 체크 박스 값을 얻고 싶다. 그것을 얻기 위해 무엇을해야합니까? 모든 정보는 나에게 매우 도움이 될 것입니다. 고맙습니다.
자세한 설명 주셔서 감사합니다. 나는 그 모델이 보통 POJO라는 것을 알았다. 이제 폼의 모델처럼 클래스를 만들고 싶습니다. 어떻게 그것에 listview를 삽입 할 수 있습니까? 텍스트 필드 또는 확인란의 경우 문자열 또는 부울이됩니다. 그럼 listview는 어떻습니까? getter와 setter와 함께리스트를 선언해야합니까? 그럼 toString 메서드는 무엇입니까? 위의 문제에서 listview.getmodelobject를 호출하면 해당 작업이 처리됩니다. 도와 주셔서 감사합니다. –