2014-05-12 8 views
2

내가 가지고있는 다음 코드개찰구 CheckGoup 선택받을 항목 markupIds

Form f = new Form("form"); 
    add(f); 
    final CheckGroup group = new CheckGroup("group", new ArrayList<Person>()); 
    f.add(group); 
    group.add(new CheckGroupSelector("groupselector")); 
    ListView persons = new ListView("persons", getPersons()) { 
     @Override 
     protected void populateItem(ListItem item) { 
      item.add(new Check("checkbox", item.getModel())); 
      item.add(new Label("name", new PropertyModel(item.getModel(), "name"))); 
      item.add(new Label("lastName", new PropertyModel(item.getModel(), "surname"))); 
     } 
    }; 
    persons.setReuseItems(true); 
    group.add(persons); 
    f.add(new AjaxSubmitLink("submit") { 

     @Override 
     protected void onSubmit(AjaxRequestTarget target, Form<?> form) { 
      System.out.println(((List)group.getModelObject()).size()); 
      // need to get group markup ids here 
     } 

    }); 

어떤 제안, 개찰구에 checkgroup에서 아이디의 마크 업을 얻을 수 있습니까?

+0

무엇이 필요합니까? – Martin

+0

내가 선택한 마크 업 ID 목록으로 일부 자바 스크립트 코드를 적용해야합니다. – falconw

답변

1

다음은 Component.getMarkupId()에 대한 설명서입니다. MarkupId를 가져와 원하는 작업을 수행하려면 구성 요소에 액세스해야합니다.

/** 
* Retrieves id by which this component is represented within the markup. This is either the id 
* attribute set explicitly via a call to {@link #setMarkupId(String)}, id attribute defined in 
* the markup, or an automatically generated id - in that order. 
* <p> 
* If no explicit id is set this function will generate an id value that will be unique in the 
* page. This is the preferred way as there is no chance of id collision. 
* <p> 
* Note: This method should only be called after the component or its parent have been added to 
* the page. 
* 
* @return markup id of the component 
*/ 
public String getMarkupId() 
{ 
    return getMarkupId(true); 
} 
+0

group.getMarkupId는 선택된 값이 아닌 그룹의 마크 업 ID를 제공합니다. – falconw

+1

예, ListItem 객체의 메소드를 호출해야합니다. 목록에 추가 할 수 있습니다. – Martin

+0

이것은 가능한 해결책이지만, 체크 그룹에서 모든 ID를 얻을 수있는 더 나은 방법이라고 생각합니다. – falconw