Как заполнить и предварительно выбрать ах: selectOneMenu? - PullRequest
2 голосов
/ 15 февраля 2012

У меня проблема с заполнением раскрывающегося значения на основе идентификатора.

Просмотр:

<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");
        }
    }   

}

Структура БД:

    SAMPLE_ID       SAMPLE_DESCRIPTION
        1                   ONE
        2                   TWO
        3                   THREE

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

Ответы [ 5 ]

1 голос
/ 15 февраля 2012

Вместо dropDownList, являющегося списком строк, сделайте его списком SelectItem .Вы можете установить значение и метку независимо таким образом.

0 голосов
/ 15 февраля 2012

изменить 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 на тип integer

0 голосов
/ 15 февраля 2012

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

0 голосов
/ 15 февраля 2012

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

Вы можете посмотреть здесь

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

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

le: @Pablo, вы правы ... ему это тоже нужно

0 голосов
/ 15 февраля 2012
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}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...