powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Веб-интерфейс для определения конфигурации с помощью комбобоксов
10 сообщений из 10, страница 1 из 1
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33037628
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возникла задачка:

Есть n combobox- ов

Combobox_1 .. Combobox_N

Есть таблица связей в базе со столбцами:

Column_1 .. Column_N

Если элемент принадлежит i тому комбобоксу , то этот элемент принадлежит i тому столбцу.

Пользователю нужно сформировать конфигурацию из N параметров c помощью комбобоксов.

Как это реализовать в виде веб- интерфейса? Возможно есть стандартные подходы?

Например, нам нужно заказать кота, для этого выбираем его конфигурацию:
цвет,вес, пол,возраст.

Combo1: color

id=1 name=рыжый
id=2 name=серый
id=3 name= белый

Combobox2: weight:

id=10 name=100kg
id=20 name=200kg
id=30 name=400kg

Combobox3: sex
id=1 name=M
id=2 name=F

Combobox4: age
id=1 name=3
id=2 name=4
id=3 name=5

Таблица cat_links содержит всех котов которые есть в наличии:

colorId weightId sexId ageId
1 10 2 2 3
2 10 1 2 3
....

З.Ы.

Вариант: сначала выбрать все что надо, а потом получить сообщение: "Извините, такого кота у нас нет" не канает.
Т.е все действия с комбобоксами должны приводить к существующим котам.
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038134
AlexMD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если речь идёт о веб-интерфейсе -
то вам нужно использовать JavaScript.
"Первое пришедшее в голову" :-)) решение:
Например, есть 3 параметра - 2й зависит от первого,
3й - от второго (страна, город, почтовый индекс).
На test.jsp указывайте 3 формы:
<form name=f1 action="test.jsp"> - т.е. сама на себя :-)))
<select name="countries" onChange="formSubmit(this.form)">
<!--получение списка значений из бина-->
</select>
</form>
2я форма:
<form name=f2 action="test.jsp"> - т.е. снова сама на себя :-)))
<select name="cities" onChange="formSubmit(this.form)">
<!--получение списка значений из бина с учетом
значения request.getParameter("countries"), т.е.
выборка из базы (или из HashMap-a :-)) городов страны из формы f1-->
</select>
</form>
3 форма:
<form name=f3 action="следующая.jsp">
<select name="zipCodes">
<!--получение списка значений из бина с учетом
значения request.getParameter("cities"), т.е.
выборка из базы (или из HashMap-a :-)) городов страны из формы f2-->
</select>
</form>
Функция formSubmit на JavaScript:
function formSubmit(){
document.forms[0].submit();
};
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038146
AlexMD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для третьей формы опечатка вышла -
из-за народного метода copy/paste,
но думаю, там всё ясно :-))
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038189
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо, с представлением на странице как раз все понятно.
Интересует связка именно с базой данных и непонятно, какая функциональность нужна.

Есть несколько вариантов:

1)
После каждого выбора в одном из комбобоксов, сужается множество возможных значений в других комбобоксах.
В итоге, если мы выбрали черный цвет, множество котов сузилось на черных, там оказались только старые, а нам надо молодого - но мы уже не сможем выбрать молодого потому что его нет в соотв. комбобоксе.

2) Не сужать множества значений в других комбобоксах.
Тогда встает вопрос...
допустим мы правильно выбрали цвет и возраст, но под такую комбинацию не существует пола- тогда при выборе несуществующего пола делать что?

- Говорить: "Извините нет"
- Устанавливать пол в селектэд, а все остальные значения, которые так мучительно набирали сбрасывать?
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038201
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
- Поставить в селектед пол и поставить в селектед те из ранее зафиксированных значений которые соответствуют этому полу.
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038230
AlexMD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бин сужает кол-во значений - я и написал:

<!--получение списка значений из бина с учетом
значения request.getParameter("countries"), т.е.
выборка из базы (или из HashMap-a :-)) городов страны из формы f1-->

т.е. список значений в комбобоксе формируется динамически,
например, из таблиц БД.
В данном случае бины каждого комбобокса должны выполнять
соотвествующие скуль :-)) запросы с параметрами к соотвествующей таблице:
select * from cities where id_country = :request.getParameter("countries").
Остальное зависит от ваших таблиц-справочников в БД.
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038476
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Turnспасибо, с представлением на странице как раз все понятно.
Интересует связка именно с базой данных и непонятно, какая функциональность нужна.

Есть несколько вариантов:
...


Если программисту не понятно, как это должно функционировать, то юзеру будет ещё сложнее научиться этим пользоваться :)
Имхо, нужно сделать проще.


Например, так:
Есть таблица. Для каждой колонки существует выпадающий список (например как заголовок таблицы), содержащий кроме всего прочего значение "any".
В самой таблице списки "котов" удовлетворяющие выбранным параметрам.
Рядом скаждым списком есть галочка - запомнить/не запоминать.
При смене значения в одном из списков, все не отмеченные галочкой списки сбрасываются на any (кроме активного списка) либо просто игнорируются и выводятся все "кошки" удовлетворяющие критериям отмеченным галочками.
Пользователь либо просто тыкает в нужную "кошку" либо сужает/расширяет поиск кликая в галочки и выбирая новое значение из списка.

Или так:
Оставить набор списков, но жёстко зафикисровать последовательность выбора параметров.
Сначала цвет, потом вес, потом пол и т.д.
Выбрали цвет, выбрали вес, выбрали пол.
Затем поменяли вес - всё что "правее" веса скидывается на "не выбрано" и пользователь продолжает кликать.
Можно добавить сюда возможность зафиксировать выбранные значения,
как в варианте выше, но это имеет смысл, только если выбирать надо действительно большое кол-во параметров.
Или предоставить юзеру возможность самому менять порядок следования параметров...


Но как не крути, всё равно может возникнуть ситауция, что выбранного животного не будет существовать, например, если его удалят из базы в период между кликами пользователя.
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038557
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможность обновления котов в базе во время выбора юзером исключается, поскольку это у меня справочные данные и меняются редко.
получится просто визард. Шаг1 Шаг2 Шаг3.

А задача стоит минимизировать количество кликов юзера и достичь желаемой конфигурации.

Вариант "Например, так:" более интерестен, но здесь добавляется новый греющий голову пользователя элемент -галочки.

Был бы благодарен за ссылки на подобные примеры.
Вариант "Или Так" не подходит по той простой причине что в таком случае это
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038562
Alexey Turn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариант "Или Так" не подходит по той простой причине что в таком случае это
получится просто визард. Шаг1 Шаг2 Шаг3.
...
Рейтинг: 0 / 0
Веб-интерфейс для определения конфигурации с помощью комбобоксов
    #33038664
AlexMD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По-моему, правильно "сужать" множество значений.
Допустим, пользователь выбрал 100 килограммового
чёрного кота 26 лет.
Тогда в список имеющихся котов (ArrayList в бине)
сузится до списка:
select name as ДОСТУПНЫЙ_КОТ from таблица_котов_в_наличии where
color=:request.getParameter("color")
and weight=:request.getParameter("weight")
and sex=:request.getParameter("sex")
and years=:request.getParameter("years")
Скорее всего, такого кота нету в наличии ;-))
Тогда в бине списокКотов.java -
****
ArrayList списокКотов= new ArrayList()
****
while (resultSet.next()) {
списокКотов.add(resultSet.getString("ДОСТУПНЫЙ_КОТ"));
}
if (списокКотов.size()==0) {списокКотов.add("ТАКИХ КОТОВ НЕТ");};
****
public ArrayList getСписокКотов(){return this.списокКотов};
****
Получается, что пользователь увидит в списке доступных котов
только одну строку - "ТАКИХ КОТОВ НЕТ" и должен будет выбрать
конфигурацию заново.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Веб-интерфейс для определения конфигурации с помощью комбобоксов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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