Вопрос по selectonemenu, jsf-2, managed-bean – Получение выбранного значения SelectOneMenu

5

м тестирование компонента "SelectOneMenu» на странице JSF. Я'Я динамически заполняю этот компонент через мой ManageBean (который получит всех животных из базы данных).

Хотелось бы узнать, возможно ли увидеть выбранный пользователем элемент этого "SelectOneMenu» (комбобокс), яЯ пытаюсь со значением = "# {} AnimalsManage.animalSelect» но он вызывается только в начале страницы. Также я'используя inputText, чтобы увидеть значение выбранного целого числаSelectOneMenu».

Что я'я делаю неправильно?

JSF:

    
    
        
                    
                    
                        
                        
                    
                    
        
    

ManageBean:

    @ManagedBean
    @ViewScoped
    public class AnimalsManage implements Serializable {

    @EJB
    private AnimalsFacadeREST animalsFacadeREST;
    private String animalSelected;
    private List< SelectItem> selectAnimals;

    public List getAllAnimals() {
            List al = animalsFacadeREST.findAll();
            selectAnimals = new ArrayList< SelectItem>();
            int i = 0;
            for (Animals animal: al) {
                selectAnimals.add(new SelectItem(i, animal.getName()));
                i++;
            }
            return selectAnimals;
    }

    public String getAnimalSelected() {
       return animalSelected;
    }

    public void setAnimalSelected(String animalSelected) {
        this.animalSelected = animalSelected;
    }
}
Что такое#{fileManage.fileName}? Кстати, отображает выпадающий список, а не выпадающий список. Получите ваши условия прямо. Наконец, что не менее важно, выполнение бизнес-логики в геттере - это плохо. Для некоторых советов о том, как использовать правильно, проверьте его вики-страницу (наведите курсор мыши на[selectonemenu] тег, который вы поставили на вопрос, пока не появится черный ящик, а затем нажмите на негоИнформация ссылка на сайт). BalusC
Вы можете просто добавить F: AJAX внутри <ч: selectOneMenu> с событием как "менять" а также предоставить атрибут рендеринга со значением "@form», Это может показать выбранное значение в текстовом поле. Как то такf: ajax event = "менять" оказывать =»@form "> , Попробуй. h-kach
Спасибо, это помогло. Кроме того, благодаря BalusC я отредактировал текст, надеюсь, теперь все в порядке. iGoDa

Ваш Ответ

1   ответ
12

е основные идеи.

Серверное решение. Просто прикрепите тег внутри вашего обновить выбранные значения и повторно отобразить пользователяс выбором, как в

<h:selectonemenu id="combo" value="#{animalsManage.animalSelected}">
    <f:selectitem itemlabel="Select..." noselectionoption="true">
    <f:selectitems value="#{animalsManage.allAnimals}">
    <f:ajax execute="combo" render="textbox">
</f:ajax></f:selectitems></f:selectitem></h:selectonemenu>
<h:inputtext id="textbox" value="#{animalsManage.animalSelected }">
</h:inputtext>

Если хотите, вы также можете сделать некоторую пользовательскую логику с выбранным элементом в слушателе ajax, указавlistener="#{animalsManage.performCustomAjaxLogic}" из тег.

Клиентское решение. Просто обновите элемент с id = "текстовое окно" на событие базового изменения. Итак, если вы используете jQuery, решение будет

$('#combo').change(function() {
    $('#textbox').val($('#combo').val());
});

Думал, что клиентское решение будет связывать только текстовое значение вашего входного компонента.

Спасибо, это сработало! Я предпочел использовать слушателя с ajax, чтобы получить то, что я хотел. Также у меня была проблема с мохаррой, не было определено, что заставило сервер остановиться и не могне запускаю мой код iGoDa
Рад, что это помогло тебе. skuntsel

Похожие вопросы