Это сводит меня с ума сегодня, поэтому мне нужно выяснить, что я делаю что-то неправильно или принципиально неправильно понимаю, как это работает.Повторить кеширование тегов?
У меня есть пользовательский элемент управления с двумя тэгами вычислений из одной и той же основы боба, как так:
<xp:text
id="test1"
value="#{claimsFiledReport.rows}">
</xp:text>
<xp:repeat
id="repeatDataRows"
value="#{claimsFiledReport.rows}"
var="row"
repeatControls="true">
<... stuff here ...>
</xp:repeat>
Подложка боб поставляя эту информацию следующим образом:
public List<List<String>> getRows() {
System.out.println("running getRows()");
List<List<String>> list = new ArrayList<List<String>>();
for (ReportLine line : getLines().values()) {
List<String> lineData = new ArrayList<String>();
lineData.addAll(line.getValueStringList());
list.add(lineData);
}
return list;
}
Теперь для части I не понимаю:
Когда я впервые загружаю страницу, консоль печатает running getRows()
дважды, а в браузере все пустое, потому что отчет еще не запущен. Затем у меня есть кнопка, которая запускает отчет и обновляет таблицу, содержащую оба этих элемента управления. Когда это произойдет, running getRows()
печатается только один раз, и только текстовое управление показывает данные. Регулятор повтора остается пустым. Поэтому единственное, что имеет смысл, это то, что элемент управления повторением кэширует результат getRows(), но это не то поведение, которое я ожидаю.
Кроме того, если я ставлю runReport()
в качестве первой линии getRows()
, то моя таблица заполняется данными по умолчанию, и если я пытаюсь изменить свой фильтр и повторно запустить отчет, таблица не меняется, а расчетное обновление текста.
Итак, мой вопрос заключается в том, не понимаю ли я, как интерфейс повторного управления взаимодействует с бэк-файлом, и если да, то как обойти это, или если у меня есть какая-то проблема с реализацией, которую я просто не могу найти.
Сюжет сгущается: я добавил элемент управления пейджером для повторного управления и, похоже, решил проблему. Чтобы сделать это, я удалил 'repeatControls = true' и установил' rows = 30'. Они были настроены таким образом, чтобы весь отчет отображался на одной странице, поэтому это не идеальное решение. Я буду исследовать далее ... –
Какова область вашего компонента?BTW вы можете полностью вычислить элементы управления пейджером, установив для свойства «alwaysComputeLast» значение «true» –