2012-02-15 4 views
2

У меня проблема с раскрывающимся списком populaing на основе ID.Как заполнить и предварительно выбрать h: selectOneMenu?

Вид:

<h:selectOneMenu id="dropDown" value="#{sampleVo.dropDownType}" "> 
    <f:selectItem itemValue="Select Value" itemLabel="Select Value" /> 
    <f:selectItems value="#{sampleService.dropDownList}" /> 
</h:selectOneMenu> 

SampleVo:

public class SampleVo implements Serializable { 

    private String dropDownType; 

    // getters and setters 
} 

SampleService:

public class SampleServiceImpl implements SampleService { 

    private List<SampleVo> listOfSampleVo; 
    private List<String> dropDownList; 

    public void onLoad() { 
     dropDownFunction(); 
    } 

    public void dropDownFunction() { 
     if (dropDownList == null) { 
      dropDownList = new ArrayList<String>(); 
      dropDownList.add("ONE"); 
      dropDownList.add("TWO"); 
      dropDownList.add("THREE"); 
     } 
    } 

} 

DB Структура:

SAMPLE_ID  SAMPLE_DESCRIPTION 
     1     ONE 
     2     TWO 
     3     THREE 

Во время загрузки страницы все три значения выпадающего значения будут заполняться по умолчанию «select value» в качестве первого параметра. Выпадающие значения отображаются в базу данных с идентификатором образца. Если в DB существует запись (например, образец id = 2, описание примера = TWO), я хочу показать два в раскрывающемся списке на основе идентификатора. Как я могу это достичь?

+0

так ... что такое действительная проблема? Вы описали это, и я еще не видел его? вы получаете какую-либо ошибку или что-то еще? – tartak

+0

Если пользователь выбрал THREE из раскрывающегося списка, мне нужно сохранить 3 в столбце ID образца –

ответ

0
public class SampleVO { 
    private int value; 
    private String name; 
    //getter & setter 
} 

В вашем XHTML

<f:selectItems value="#{sampleService.dropDownList}" var="v" itemLabel="#{v.name}" itemValue="#{v.value}"/> 
0

Хорошо, я думаю, что вам нужен собственный конвертер

Вы можете посмотреть here

Проверьте реализацию getAsString() и getAsObject () и настроить его для того, что вам нужно.

совет. getAsString должен возвращать TWO, и getAsObject должен возвращать весь объект SampleVO.

ля: @Pablo вы правы .. ему нужно, что тоже

1

Вместо DROPDOWNLIST быть список строк, сделать его SelectItem списка. Таким образом вы можете установить значение и метку.

0

В соответствии с вашим вопросом, хотите ли вы получить выбранное по умолчанию выбранное значение (образец id = 2, description description = TWO), когда ваша страница была загружена. Поэтому вы должны инициализировать это значение в переменной "dropDownType". Ваш xhtml неверно. Если вы использовали тег f: selectItems, вы должны удалить f: selectItem tag.

0

изменение dropDownFunction() сделать это список

public List<SelectItem> dropDownItems() { 
    ArrayList<SelectItem> items = new ArrayList<SelectItem>(); 
    items.add(new SelectItem(1,"ONE"); 
    items.add(new SelectItem(2,"TWO"); 
    items.add(new SelectItem(3,"TREE"); 
} 

И изменить dropDownType ввести целое