У меня есть список с x количеством элементов и страница с x количеством портлетов.Каждый портлет на странице имеет один и тот же класс поддержки и доступ к моему списку, и то, что показано, меняется в зависимости от того, какой элемент списка выбран.Режим редактирования позволяет пользователю выбирать, какой элемент отображать, и я сохраняю выбранный ими элемент в объекте предпочтений за портлетом.
В существующем состоянии каждый портлет первоначально отображает первый элемент в списке до тех пор, покаПользователь редактирует портлет и выбирает другой элемент.Однако я бы хотел, чтобы в каждом портлете изначально отображался отдельный элемент.
Похоже, мне придется рассчитывать, какой элемент отображать, основываясь на позиции.Если у меня есть 2 столбца и 6 строк, то элемент в столбце 2 строки 4 будет отображать элемент 8 ((строка - 1) * #columns + столбец).Это работает хорошо, за исключением того, что, когда пользователь начинает перемещать портлеты, значения портлетов меняются с позицией.
Я бы хотел «заблокировать» элемент, выбранный изначально, чтобы он не изменялся при движении,К сожалению, мне действительно нужно сохранить исходный выбранный элемент (или начальную позицию) в объекте предпочтений, но я не могу сделать это в функции doView, и processAction не вызывается до тех пор, пока портлет не переключит состояния.
Я думал о том, чтобы просто сохранить первоначальный выбор в сеансе и прочитать его при вызове функции processAction (придавая ей более низкий приоритет, чем фактический представленный выбор).Проблема заключается в том, что, если сеанс становится недействительным до того, как пользователь переключит режимы портлета, выбранный элемент не будет сохранен.
Моя другая мысль заключалась в том, чтобы как-то включить положение портлета в качестве переменной в портлет.элемент предпочтений в файле portlet.xml, но я даже не знаю, возможно ли это.
Я полагаю, что другим вариантом будет использование моей собственной реализации предпочтений, но я вижу это в качестве крайней меры.
У кого-нибудь есть идеи о том, как я могу выполнить то, что мне нужно?
Любая помощь / предложения очень ценятся.
Спасибо,
BJ
PS Я использую спецификацию Portlet 2.0 (хотя я не использую события) и Jetspeed 2.1 в качестве контейнера портлета.