From 460e1d1bbae1120c0398f02914dd9c8b23d94151 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sun, 26 Feb 2023 18:08:18 +0100 Subject: [PATCH] #728 - fix access to request attributes: Due to changes in spring boot 3 request attributes are no longer exposed to freemarker. Therefore, all needed attributes must be copied to model attributes --- .../TransactionImportController.java | 31 ++++++++++++++++--- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java index e5c8749e9..f868c4ed1 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/transactions/TransactionImportController.java @@ -79,10 +79,11 @@ public class TransactionImportController extends BaseController { request.removeAttribute(RequestAttributeNames.CURRENT_CSV_TRANSACTION, RequestAttributes.SCOPE_SESSION); - if(request.getAttribute(RequestAttributeNames.CSV_IMPORT, RequestAttributes.SCOPE_SESSION) == null) - { - model.addAttribute(RequestAttributeNames.CSV_IMPORT, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0)); - } + // copy session attributes to model, otherwise they are not available in freemarker + fillModelAttributeFromRequestSessionOrDefault(model, RequestAttributeNames.CSV_IMPORT, request, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0)); + fillModelAttributeFromRequestSession(model, RequestAttributeNames.CSV_ROWS, request); + fillModelAttributeFromRequestSession(model, RequestAttributeNames.CSV_TRANSACTIONS, request); + fillModelAttributeFromRequestSession(model, RequestAttributeNames.ERRORS_COLUMN_SETTINGS, request); final Object bindingResult = request.getAttribute(RequestAttributeNames.ERROR_UPLOAD, RequestAttributes.SCOPE_SESSION); if(bindingResult != null) @@ -97,6 +98,28 @@ public class TransactionImportController extends BaseController return ReturnValues.TRANSACTION_IMPORT; } + private void fillModelAttributeFromRequestSessionOrDefault(Model model, String attributeName, WebRequest request, Object defaultValue) + { + final Object attribute = request.getAttribute(attributeName, RequestAttributes.SCOPE_SESSION); + if(attribute == null) + { + model.addAttribute(attributeName, defaultValue); + } + else + { + model.addAttribute(attributeName, attribute); + } + } + + private void fillModelAttributeFromRequestSession(Model model, String attributeName, WebRequest request) + { + final Object attribute = request.getAttribute(attributeName, RequestAttributes.SCOPE_SESSION); + if(attribute != null) + { + model.addAttribute(attributeName, attribute); + } + } + @PostMapping("/upload") public String upload(WebRequest request, @ModelAttribute("CsvImport") CsvImport csvImport, -- GitLab