Сетка флажков представляет отношение «многие ко многим»; лучший способ добраться от веб-формы до базы данных - PullRequest
1 голос
/ 26 августа 2010

Я использую сервер jquery / jsp / java ejb3.0 / sql.

Требование к пользовательскому интерфейсу (страница jsp) - это сетка флажков, высотой ~ 10 строк и до ~ 30 строкширокий (это варьируется), он представляет таблицу компоновщика для отношения таблицы многие-ко-многим.

Флажки будут заполнены из базы данных (если строка присутствует в таблице компоновщика, то флажок установлен).

Затем пользователь может установить или снять флажок столько раз, сколько это возможно.После отправки любые изменения должны быть сохранены в БД.Изменения будут состоять из удаления строки, если она не отмечена (и если отмечена / строка присутствует ранее), и вставки строки, если отмечена (и не отмечена / строки ранее не было).

Моя проблема в том, как лучше всего это реализовать?Использование ajax для обновления базы данных с использованием флажка onchange event не подходит.Я хочу, чтобы это было событие отправки формы.

1 Ответ

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

Я бы попытался декомплексировать ситуацию, сделав шаг назад и введя простой бин для представления «метаданных» - то есть 300 или около того истинных / ложных значений.

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

public class MotherBean {
    private UserSettingBean userSettingBean;
    private UserRelationshipBean userRelationshipBean;
    private UserPreferencesBean userPreferencesBean;
    ...
}

Таким образом, ваш «веб-уровень» становится простым CRUD-контроллером для MotherBean;что-то, что делается каждый день.Вы можете даже использовать что-то вроде Spring Roo , чтобы создать для этого строительные леса.

Затем, когда вы передаете этот bean-компонент на нижний уровень (уровни) (вы можете иметь или не иметь традиционный уровень «обслуживания» или «бизнес-логики» в этом проекте), вы получаете DAO, который переводитметаданные отношений в фактические отношения «многие ко многим».Учитывая количество областей, о которых мы говорим, я бы снова предложил делегировать эту работу в под-DAO (из-за отсутствия лучшего термина), которые имеют дело со связанными ссылками.

Очевидно, что путь get - это то же самое, что и в обратном направлении.Вы запрашиваете у MotherBeanDAO метаданные, относящиеся к пользователю 1234, он запрашивает у своих делегатов DAO дочерние бины, оборачивает их, и результирующий MotherBean проходит весь путь до веб-интерфейса.

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