Объедините два списка в set / hash / map в Java, затем отобразите в Struts 1.x - PullRequest
4 голосов
/ 01 сентября 2011

Во-первых, два списка содержат разные наборы данных, однако, благодаря некоторому объединению переменных в методе get, в конечном итоге сохраняются данные одного типа. Конечная цель - заполнить раскрывающийся список обоими списками, отсортированными по их именам (описание).

Основным является то, что есть ДВУХ таблиц, содержащих тип данных, но хранящих их настолько по-разному, что практически невозможно написать хороший оператор SQL, чтобы получить их. Конечным результатом является объект «name» или «nameIndex».

Оба имеют индексный код, но он не связан с противоположной таблицей, он связан с тем, что хранится в третьей таблице, которую необходимо обновить с помощью этого кода. Коды никогда не будут совпадать между таблицами (одна длиной два символа, другая 3 или более).

Как объединить эти два списка в раскрывающемся списке для пользователя, чтобы значением раскрывающегося списка был индекс и описание, отображаемое в виде метки?

Пример:

<html:select property="name">
   <html:optionsCollection name="nameList" label="nameDescription" value="nameCode" />
</html:select>

<html:select property="nameIndex">
   <html:optionsCollection name="nameIndexList" label="nameIndexDescription" value="nameIndexId.nameCode" />
</html:select>

(обратите внимание на значение "nameIndexId.nameCode") в это:

<html:select property="allNames">
   <html:optionsCollection name="allNames" label="nameDescription" value="nameCode" />
</html:select>

Ответы [ 2 ]

2 голосов
/ 13 сентября 2011

Хотя это практически невозможно, это не было полностью невозможно.Я создал представление в SQL, чтобы получить оба списка одновременно с нужными мне данными, вот мой ответ:

CREATE OR REPLACE VIEW FULL_NAME_LIST_VIEW AS SELECT 
    N.NAME_ID AS ID, 
    N.DISPLAY DISPLAY,
    'BOSS' TYPE
FROM NAME N
UNION
SELECT 
    NI.NAME_INDEX_ID AS ID,
    (FIRST.DISPLAY || ' - ' || LAST.DISPLAY) AS DISPLAY,
    NI.TYPE_ID TYPE
FROM NAME_INDEX NI,
     NAMEHOLDER FIRST,
     NAMEHOLDER LAST
WHERE NI.FIRST_ID = FIRST.NAME_ID
AND NI.LAST_ID = LAST.LAST_ID;

Это создаст представление, которое вы можете вытащить, как любую обычную таблицу для значений ID,ОТОБРАЖЕНИЕ и ТИП.Вероятно, это не частая проблема, но это хорошее решение для тех, кто сталкивается с подобным мусором в будущем, когда вы не можете изменить структуру данных.

1 голос
/ 07 сентября 2011

Одна простая вещь, которую вы можете сделать в своей логике DAO, это; создавать объекты LabelValueBean, заполняя оба списка (конечно, используя 2 цикла). Из первого списка вы должны создать объекты с меткой как «nameDescription» и значением как «nameCode», а из второго списка это будут данные. Вы должны добавить эти объекты LabelValueBean в один список и установить его в качестве атрибута для запроса или сеанса. Теперь в вашем JSP вы можете ссылаться на этот новый список в теге html: optionsCollection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...