powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / h:selectOneMenu Как сделать selected нужный пункт!?
8 сообщений из 8, страница 1 из 1
h:selectOneMenu Как сделать selected нужный пункт!?
    #37592445
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе! Пытаюсь создать форму редактирования и одно из значений это словарь который можно изменить в h:selectOneMenu. Не могу найти как установить selected уже выбранного пункта. Кто-нибудь подскажите или может надо использовать другой компонент для этих целей!?

Код: html
1.
2.
3.
4.
<h:selectOneMenu id="tcntId" value="#{typeContact.tcntId}">
     <f:selectItem itemLabel="Выбрать" itemValue=""/>
     <f:selectItems var="typeContact" value="#{typeContacts}" itemLabel="#{typeContact.tcntName}" itemValue="#{typeContact}"/>
</h:selectOneMenu>



СПАСИБО!!!
...
Рейтинг: 0 / 0
h:selectOneMenu Как сделать selected нужный пункт!?
    #37592913
fixdev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Николаха,

То что у тебя будет указано в <h:selectOneMenu value="..."
это и будет selected.

PS: Не уверен что можно использовать одновременно f:selectItem и f:selectItems. Оно действительно работает?
...
Рейтинг: 0 / 0
h:selectOneMenu Как сделать selected нужный пункт!?
    #37593197
Фотография Ruslan.Isbarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fixdevОно действительно работает?
Оно действительно работает!
...
Рейтинг: 0 / 0
h:selectOneMenu Как сделать selected нужный пункт!?
    #37593471
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Только учитывай что в value="#{typeContact.tcntId}" у тебя должен быть не String, а полноценный SelectItem
...
Рейтинг: 0 / 0
h:selectOneMenu Как сделать selected нужный пункт!?
    #37593624
Фотография Ruslan.Isbarov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никТолько учитывай что в value="#{typeContact.tcntId}" у тебя должен быть не String, а полноценный SelectItem
Это еще почему? Значение в value может иметь тот же тип, что и элементы selectItems.

В качестве небольшого примера...
Код: java
1.
2.
3.
4.
<h:selectOneMenu value="#{selectOneMenuTestBean.selectedValue}">
    <f:selectItem itemLabel="Выбрать" itemValue=""/>
    <f:selectItems value="#{selectOneMenuTestBean.values}"/>
</h:selectOneMenu>


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
@ManagedBean
@ViewScoped
public class SelectOneMenuTestBean {

    private String selectedValue;

    public List<String> getValues() {
        return Arrays.asList("Test 1", "Test 2", "Test 3");
    }

    public String getSelectedValue() { return selectedValue; }
    public void setSelectedValue(String selectedValue) { this.selectedValue = selectedValue; }

}


...
Рейтинг: 0 / 0
h:selectOneMenu Как сделать selected нужный пункт!?
    #37593669
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чутка наврал, со стрингом будет работать, просто потому что у него метод toString() выводит саму эту строку. В общем случае, с объектом проихвольного типа так делать нельзя. Еще присмотрелся к коду - сразу не заметил

Код: html
1.
2.
3.
4.
<h:selectOneMenu id="tcntId" value="#{typeContact.tcntId}">
     <f:selectItem itemLabel="Выбрать" itemValue=""/>
     <f:selectItems var="typeContact" value="#{typeContacts}" itemLabel="#{typeContact.tcntName}" itemValue="#{typeContact}"/>
</h:selectOneMenu>



1) h:selectOneMenu id="tcntId" value="#{typeContact.tcntId}" ---- вот тут должен быть SelectItem, сконструированный на основе typeContact
2) <f:selectItems var="typeContact" value="#{typeContacts}" itemLabel="#{typeContact.tcntName}" itemValue="#{typeContact}"/> -----
тут вообще мешанина, в value идет - список контактов, в качестве itemLabel - почему-то передается уже typeContact.tcntName, а itemValue - вообще кастомный объект.

В общем как надо сделать.

1) Сделать бин, в нем ввести 2 поля - текущий контакт(selectItem), и список контактов list<SelectItem>.
2) В момент когда значение изменено должен вызываться propertyChangeListener, который устанавливает текущий селектитем в тот, что пришел от клиента.
...
Рейтинг: 0 / 0
h:selectOneMenu Как сделать selected нужный пункт!?
    #37594029
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
забыл никЧутка наврал, со стрингом будет работать, просто потому что у него метод toString() выводит саму эту строку. В общем случае, с объектом проихвольного типа так делать нельзя. Еще присмотрелся к коду - сразу не заметил

Код: html
1.
2.
3.
4.
<h:selectOneMenu id="tcntId" value="#{typeContact.tcntId}">
     <f:selectItem itemLabel="Выбрать" itemValue=""/>
     <f:selectItems var="typeContact" value="#{typeContacts}" itemLabel="#{typeContact.tcntName}" itemValue="#{typeContact}"/>
</h:selectOneMenu>



1) h:selectOneMenu id="tcntId" value="#{typeContact.tcntId}" ---- вот тут должен быть SelectItem, сконструированный на основе typeContact
2) <f:selectItems var="typeContact" value="#{typeContacts}" itemLabel="#{typeContact.tcntName}" itemValue="#{typeContact}"/> -----
тут вообще мешанина, в value идет - список контактов, в качестве itemLabel - почему-то передается уже typeContact.tcntName, а itemValue - вообще кастомный объект.

В общем как надо сделать.

1) Сделать бин, в нем ввести 2 поля - текущий контакт(selectItem), и список контактов list<SelectItem>.
2) В момент когда значение изменено должен вызываться propertyChangeListener, который устанавливает текущий селектитем в тот, что пришел от клиента.

На 1) вроде не должен быть SelectItem. Я делал что h:selectOneMenu id="tcntId" value="#{typeContact.tcntId}" typeContact - Это persistence класс и если делаешь на нем сабмит все прекрасно присваивается в #{typeContact.tcntId}.

На 2) тут мешанина!? 0_О Вроде все тут ясно! Вот тут то value="#{typeContacts}" и есть List<SelectItem>. Как я понял JSF делает какие-то конвертеры по умолчанию!

Вот как я заполнял #{typeContacts}

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public List<SelectItem> convertTypeContactList(List<TypeContact> typeContactList) {
		List<SelectItem> typeContacts = new ArrayList<SelectItem>();
		
		if (typeContactList.size()>0) {
			for(int i=0;i<typeContactList.size();i++) {
				SelectItem item = new SelectItem(((TypeContact)typeContactList.get(i)).getTcntId(),
												 ((TypeContact)typeContactList.get(i)).getTcntName());
				typeContacts.add(item);
			}
		}
		
		return typeContacts;
	}



А вообщем я разобрался с вопросом. Если указать так value="#{typeContact.tcntId}" и перед выводом на страницу в самом флоу например получить объект typeContact, то когда этот селект h:selectOneMenu будет генерироваться то он сам сопоставит его с элементом в typeContacts который List<SelectItem> вот и всё!!! СПАСИБО всем за то что не молчали!!! =))
...
Рейтинг: 0 / 0
h:selectOneMenu Как сделать selected нужный пункт!?
    #37594057
Николаха
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати propertyChangeListener наверное лучше использовать не для самого него, а для reRender других компонентов которые зависят от его значения!

<a4j:support> demo page
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / h:selectOneMenu Как сделать selected нужный пункт!?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]