English 中文(简体)
如何使javax.faces.model.SelectItem被选中
原标题:
  • 时间:2009-03-06 15:23:32
  •  标签:

我正在创建一个javax.faces.model.SelectItem列表(在bean中),以供h:selectManyCheckbox使用,但我无法弄清楚如何将SelectItem设置为选定状态。

怎么做呢?一定是可能的,对吧?...

    public List<SelectItem> getPlayerList(String teamName) {
    List<SelectItem> list = new ArrayList<SelectItem>();

    TeamPage team = (TeamPage) pm.findByName(teamName);

    List<PlayerPage> players = pm.findAllPlayerPages();

    for (PlayerPage player : players) {
        boolean isMember = false;
        if (team.getPlayerPages().contains(player)) {
            isMember = true;
        }
        SelectItem item;
        if (isMember) {
            // TODO: Make SelectItem selected???
            item = null;
        } else {
            item = new SelectItem(player.getId(), createListItemLabel(player), "", false, false);
        }
        list.add(item);         
    }
    return list;
}
最佳回答

假设我们有这个JSF代码:

<h:selectManyCheckbox value="#{bean.selectedValues}">
    <f:selectItems value="#{bean.playerList}"/>
</h:selectManyCheckbox>

然后选择的值(即选中的复选框)被存储在bean.selectedValues属性中。

因此,在您的Java代码中,您必须通过将正确的ID放入selectedValues属性来处理selectValues。

问题回答

If anybody is working with selectOneMenu and populating elements dynamically: While creating a SelectItem, if you provide some value(first parameter) as follows:

new SelectItem("somevalue", "someLabel", "someDescription", false, false);

这在HTML中翻译为:

<option value="somevalue">someLabel</option>

如果您不提供以下值:

new SelectItem("", "someLabel", "someDescription", false, false);

翻译成中文:它翻译成这个。

<option value="" selected="selected">someLabel</option>

因此,如果您希望一个元素在页面加载时成为默认元素(如“选择其中之一”),请不要提供值。如果您创建多个没有值的元素,则任何一个元素都可以在页面加载时选择为默认元素(可能基于按字母顺序升序的偏好)。





相关问题
热门标签