Struts2多个选择框预先选择当前选项

时间:2010-11-10 09:23:45

标签: java struts2

我创建了一个表格&在struts2中用于编辑用户记录的操作,用户可能有一个或多个角色,我有一个表单是多选框,用于选择给定用户的角色。从数据库中读取选择框内容,我希望选择框在加载表单时预先选择用户当前选项,使用在线找到的示例我有以下内容。

在我的动作类中

public List<Role> getRoles()
{
    return roles;
}


public void setRoles( List<Role> roles )
{
    this.roles = roles;
}


public List<Role> getAvailableRoles()
{
    return availableRoles;
}

在我的JSP中

<s:select list="availableRoles" listKey="id" listValue="name" name="roles" label="Roles" multiple="true" />

创建了多个选择框,但没有选择任何项目开始,我有点困惑,因为我找到的每个例子都是这样。

我确实尝试将选择框更改为:

<s:select list="availableRoles" name="roles" label="Roles" multiple="true" />

这种方式成功预先选择了选项,然后下拉列表填充了我的Role类上的toString()方法返回的内容,而不是我想要的getId()和getName()方法。我出错的任何想法?

2 个答案:

答案 0 :(得分:0)

我认为您的问题可能是getRoles()setRoles()需要List<String>而不是List<Roles>。这是因为HTML select使用字符串作为其键。将类型更改为List<String>,并使用用户当前选项的角色的Id初始化roles变量。这是因为你有listkey=id。您还需要multiple=true

答案 1 :(得分:0)

阅读struts2源代码后,我的回答似乎相当明显。我需要在我的Role类上实现.equals()方法才能使其正常工作。