2016-04-26 6 views
0

Im mit Select statt DropDownChoice, um OPTGROUP zu verwenden.Wicket 7 - Select, SelectOptions und voreingestellt

Select<Role> roleInput = new Select<Role>("role", new PropertyModel<Role>(this,"selectedRole")); 

Die beiden Liste der Rolle sind:

SelectOptions<Role> fedOptions = new SelectOptions<Role>("federazione",federationRoleList,new RoleRenderer()); 
SelectOptions<Role> eOptions = new SelectOptions<Role>("enti",eRoleList,new RoleRenderer()); 

Seine gut arbeiten bei der Einreichung und auch eine AjaxFormComponentUpdatingBehavior auf roleInput Anwendung, ich habe meine Property dynamisch modifiziert.

Leider habe ich ein Problem mit voreingestellten. Ich habe versucht, selectedRole mit einer bestimmten Rolle zu setzen, aber die Auswahl beginnt immer mit dem ersten Element der ersten Liste.

DropDownChoice funktioniert tadellos vor der Einstellung des Modells, aber nicht Select.

Ich habe versucht, mit

roleInput.setModelObject(selectedRole); 

aber seine nicht funktioniert.

Ich denke, das Problem ist mit dieser Komponente, die zwei oder mehr Repeater statt einer einzigen Liste verwalten muss.

Irgendwelche Hinweise?

Dank

EDIT: Implementierung von RoleRenderer

public class RoleRenderer implements IChoiceRenderer<Role>,Serializable{ 
private static final long serialVersionUID = 1L; 

@Override 
public Object getDisplayValue(Role object) { 
    return object.getName(); 
} 

@Override 
public String getIdValue(Role object, int index) { 
    return object.getId().toString(); 
} 

@Override 
public Role getObject(String id, IModel<? extends List<? extends Role>> choices) { 
    return getObjectFromId(id); 
} 

public Role getObjectFromId(String id){ 
    return null; 
}; 

}

HINWEIS: getObjectFromId benötigen Zugriff auf Manager so außerhalb overrided werden.

+0

Können Sie Ihre Implementierung von RoleRenderer posten? –

Antwort

1

Setzen Sie einen Haltepunkt an org.apache.wicket.extensions.markup.html.form.select.SelectOption # onComponentTag() und sehen, was von select.isSelected(this) für die SelectionOption zurückgegeben wird, die das Standardmodell übereinstimmt (Objekt). Es könnte sein, dass Ihre #equals() Implementierung nicht korrekt ist.