2016-04-26 51 views
0

使用選擇而不是DropDownChoice來使用OPTGROUP。檢票口7 - 選擇,選擇選項和預設

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

角色的兩個列表是:

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

其提交和也roleInput應用AjaxFormComponentUpdatingBehavior時運作良好,我有我的PropertyModel動態修改。

Unfortunally我有一個預先設定的一個問題。 我嘗試使用特定的角色設置selectedRole,但Select始終始於第一個列表的第一個元素。

DropDownChoice完美的作品預設置的模式,但沒有選擇。

我試着

roleInput.setModelObject(selectedRole); 

,但它不工作。

我認爲這個問題是與此組件具有管理兩個或更多中繼器,而不是一個單獨的列表。

任何線索?

感謝

編輯: 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; 
}; 

}

注意的執行情況:getObjectFromId需要訪問管理器,以便將外overrided。

+0

請問,你可以發佈你的RoleRenderer的實現嗎? –

回答

1

在org.apache.wicket.extensions.markup.html.form.select.SelectOption#onComponentTag()處添加一個斷點,查看select.isSelected(this)對與默認模型(對象)匹配的SelectionOption返回的內容。 這可能是因爲您的#equals()實施不正確。