Nano Hash - криптовалюты, майнинг, программирование

Сохраненное значение Java ADF из элемента управления данными не отображается до следующего запуска

По сути, у меня есть страница JSF с рядом компонентов, включая таблицу ADF, заполненную списком данных, возвращаемых методом getData() в моем классе управления данными. Над таблицей я пытаюсь отобразить некоторые расчетные значения из отображаемых данных, но значения полей отображаются неправильно.

(Я использую JDev 11.1.1.5)

Класс управления данными называется RecentDeals, а метод getData() возвращает список объектов сделок, который включает ряд полей (даты, значения, имена и т. д.).

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

Ниже приведен фрагмент кода для справки:

public class RecentDealsDC {

    private Double avgSize;
    private Double avgTerm;
    private Double avgRent;
    ...

    public RecentDealsDC() {
        super();
        avgSize = 0.0;
        avgTerm = 0.0;
        avgRent = 0.0;
        ...
    }

    public List<DealDTO> getData(List<String> businessUnits){
        List<TransactionDTO> transactions = new ArrayList<TransactionDTO>();
        List<DealDTO> deals = new ArrayList<DealDTO>();
        TransactionSessionBean transBean = lookupTransactionSessionBean();

        Double size = 0.0;
        Double term = 0.0;
        Double totalBaseRent = 0.0;
        ...
        Integer recordCount = 0;

        if (businessUnits != null && !businessUnits.isEmpty()){
            transactions = transBean.getDealsData(SystemUtil.getCurrentUser(), businessUnits);

            recordCount = transactions.size();

            if( recordCount > 0 ){
                for (int i=0; i < recordCount; i++){
                    TransactionDTO transObj = new TransactionDTO();
                    DealDTO dealObj = new DealDTO();

                    transObj = transactions.get(i);

                    // process transaction, execute logic, store deal values

                    size = size + transObj.getRentableArea();
                    term = term + transObj.getLeaseTerm();
                    totalBaseRent = totalBaseRent + (transObj.getRentableArea() * transObj.getBaseRent());
                    ...

                    deals.add(dealObj);
                }
            }

            avgSize = size / recordCount;
            avgTerm = term / recordCount;
            avgRent = totalBaseRent / size;
            ...

        }

        return deals;
    }
}

Когда я запускаю свою страницу JSF, она правильно отображает данные из объектов List of Deal, но вычисляемые поля просто отображают ноль. Когда пользователь выбирает следующие «критерии» для заполнения таблицы (из раскрывающегося списка в заголовке), вычисляемые поля затем обновляются предыдущими сохраненными значениями. Другими словами, поля заголовка показывают средние значения, относящиеся к предыдущему набору данных, и кажется, что цикл продолжается для каждого последующего выбора пользователя, поэтому пользователь вынужден выбирать другое значение, чтобы получить необходимые средние значения, что явно неприемлемо. .

Я подтвердил в режиме отладки, что вычисления выполняются правильно и правильные значения сохраняются в закрытых переменных перед возвратом списка.

Не уверен, что мне здесь не хватает, но я думаю, что мне нужно как-то «обновить» компоненты outputText, чтобы сразу отображать ожидаемые значения. Это то, что я исследую, но сейчас что-то теряюсь.

Любые предложения/направления/идеи будут действительно оценены.

РЕДАКТИРОВАТЬ: похоже, что поля outputText также обновляются, когда я сворачиваю и повторно расширяю панель PanelBox, в которой они содержатся. Поэтому мне интересно, есть ли способ вручную выполнить то же самое обновление...

Спасибо, Карим


Ответы:


1

Решение, к которому я пришел, выглядит следующим образом:

Пересмотрел метод getData класса DC, чтобы вернуть новый DTO, содержащий исходный набор результатов List и 4 переменные, которые мне нужно было отобразить. Затем я связал набор результатов и переменные из-под возвращенного DTO с теми же соответствующими компонентами (набор результатов в таблице ADF, переменные в 4 полях outputText в заголовке над таблицей набора результатов). Затем я добавил свойство Refresh="IfNeeded" в итератор для привязок атрибутов.

Теперь мои поля outputText обновляются, как и ожидалось, одновременно с изменением набора результатов!

Карим

12.12.2012
  • Не могли бы вы объяснить это? У меня такая же проблема. 10.02.2016
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

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

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..