Как заставить портлеты с одинаковым классом поддержки отображать различную информацию?

У меня есть список с x количеством элементов и страница с x количеством портлетов. Каждый портлет на странице имеет один и тот же класс поддержки и доступ к моему списку, и то, что показано, меняется в зависимости от того, какой элемент списка выбран. Режим редактирования позволяет пользователю выбирать, какой элемент отображать, и я сохраняю выбранный элемент в объекте предпочтений за портлетом.

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

Похоже, мне придется рассчитывать, какой элемент показать на основе позиции. Если у меня есть 2 столбца и 6 строк, то элемент в столбце 2 строки 4 будет отображать элемент 8 ((строка - 1) * #columns + столбец). Это работает хорошо, за исключением того, что, когда пользователь начинает перемещать портлеты, значения портлетов меняются в зависимости от положения.

Я бы хотел "заблокировать" выбранный элемент, чтобы он не менялся при движении. К сожалению, мне действительно нужно сохранить начальный выбранный элемент (или начальную позицию) в объекте предпочтений, но я не могу сделать это в функции doView, и processAction не вызывается, пока портлет не переключит состояния.

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

Моя другая мысль заключалась в том, чтобы как-то включить положение портлета в качестве переменной в элемент portlet-preferences файла portlet.xml, но я даже не знаю, возможно ли это.

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

У кого-нибудь есть идеи о том, как я могу достичь того, что мне нужно?

Любая помощь / предложения очень ценятся.

Спасибо,

BJ

PS Я использую спецификацию Portlet 2.0 (хотя я не использую события) и Jetspeed 2.1 в качестве контейнера портлета.

1 ответ

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

Другие вопросы по тегам