Wicket 7 - 选择,选择选项和预设

时间:2016-04-26 14:05:40

标签: select wicket options dropdownchoice

我使用Select而不是DropDownChoice来使用OPTGROUP。

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。

不幸的是我预设了一个问题。 我尝试使用特定角色设置selectedRole,但Select始终以第一个列表的第一个元素开始。

DropDownChoice可以很好地预先设置模型,但不能选择。

我试过

roleInput.setModelObject(selectedRole);

但它不起作用。

我认为问题在于这个组件必须管理两个或更多个Repeater而不是单个列表。

有任何线索吗?

由于

编辑: 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需要访问Manager才会被覆盖在外面。

1 个答案:

答案 0 :(得分:1)

在org.apache.wicket.extensions.markup.html.form.select.SelectOption#onComponentTag()上放置一个断点,看看select.isSelected(this)为与默认模型(对象)匹配的SelectionOption返回了什么。 可能是您的#equals()实施不正确。