2

我有一个 GWT 视图,我从中获取下拉列表的值并将其存储在数据库中。下拉列表的值为“一”“二”“三”。当我回到同一个视图并且我将“Two”存储在数据库中时,我希望“Two”成为选定的项目。但是,目前我可以让它工作的唯一方法是遍历列表框中的每个项目以找到匹配的项目,然后将其设置为选定的项目。有没有更好的方法来实现这一目标?我不想保存选定的索引。

4

1 回答 1

1

我建议你扩展 ListBox 并实现 TakesValue 接口。在这个类中维护一个列表变量,它保存了 ListBox 中的所有项目。setValue 和 getValue 应该类似于以下代码片段 -

private List<String> listItems = new ArrayList<String>();

public class MyListBox extends ListBox implements TakesValue<String>
{
         public void setValue( String value )
         {
        if ( listItems.size() > 0 )
        {
            int valueIndex = 0;
            if ( listItems.contains( value ) )
            {
                valueIndex = listItems.indexOf( value );
                this.value = value;
            }
            setItemSelected( valueIndex, true );
        }
        }

        public String getValue()
        {
        int selectedIndex = super.getSelectedIndex();
        String value = null;
        if ( selectedIndex >= 0 )
        {
            value = super.getValue( selectedIndex );
            if ( "null".equals( value ) )
            {
                value = null;
            }
        }

        return value;
        }

        public void setOptions(List<String> options)
        {
              listItems.clear();
              listItems.addAll( items );
              for ( String item : listItems )
              {
                    addItem( item, item );
              }
        }
}

现在只需从视图 java 文件中调用 listBox.setValue(value) 方法即可。在此之前必须设置选项。

于 2013-02-26T03:32:13.403 回答