2014-12-27 6 views
0

У меня возникли проблемы с моим кодом, чтобы установить выбранный вариант в SelectElement, основываясь на состоянии:Установить выбранный вариант из SelectElement

@Override 
public void setModel(String s) { 
    int children = this.getElement().getChildCount(); 
    int i = 0; 
    while(i < children){ 
     Node child = this.getElement().getChild(i); 
     final Element el = child.cast(); 
     if (Element.is(el)) { 
      if(el.getAttribute("attribute_to_check") != null){ 
       if(el.getAttribute("attribute_to_check").equalsIgnoreCase(s)){ 
        SelectElement se = this.getElement().cast(); 
        se.setSelectedIndex(i); 
       } 
      } 
     } 
     ++i; 
    } 
} 

Каждый <option> в SelectElement имеет уникальный атрибут Строка с именем attribute_to_check к которому код сравнивает желаемый параметр, который нужно выбрать.

Проблема, если строка, которая находится в индексе 0, позволяет назвать ее option0.

  • Проходя option0, тот, который получает выбранный option3,
  • , если переданная строка option1 вариант, который получает выбранный option5 и так далее.

Что может быть неправильным в отношении этого кода, что происходит в этом пропуске?

+0

Похоже, что индексы не выровнены. 'se', ссылаясь на' this' и 'child', выбираются с одним и тем же индексом. Это правильно? – Mouser

+0

Да, this.getElement() - это фактический элемент выбора – xybrek

ответ

1

Держу пари, в выборе есть дети, не являющиеся элементами.

Попробуйте приращивать i только когда Element.is(el) или, лучше, петля над SelectElement#getOptions().

Смежные вопросы