Skip to content
Snippets Groups Projects
Commit 8f03c897 authored by Robert Goldmann's avatar Robert Goldmann
Browse files

#724 - always return to the same page and url

parent f706d12f
No related branches found
No related tags found
No related merge requests found
...@@ -18,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping; ...@@ -18,7 +18,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.WebRequest; import org.springframework.web.context.request.WebRequest;
import javax.servlet.http.HttpServletRequest;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.List; import java.util.List;
...@@ -29,7 +28,6 @@ public class TransactionImportController extends BaseController ...@@ -29,7 +28,6 @@ public class TransactionImportController extends BaseController
private static class ModelAttributes private static class ModelAttributes
{ {
public static final String ERROR = "error"; public static final String ERROR = "error";
public static final String ERROR_UPLOAD = "errorUpload";
} }
private static class ReturnValues private static class ReturnValues
...@@ -43,6 +41,8 @@ public class TransactionImportController extends BaseController ...@@ -43,6 +41,8 @@ public class TransactionImportController extends BaseController
{ {
public static final String CSV_IMPORT = "csvImport"; public static final String CSV_IMPORT = "csvImport";
public static final String CSV_ROWS = "csvRows"; public static final String CSV_ROWS = "csvRows";
public static final String ERROR_UPLOAD = "errorUpload";
public static final String ERROR_UPLOAD_FILE = "errorUploadFile";
} }
private final TransactionService transactionService; private final TransactionService transactionService;
...@@ -56,15 +56,24 @@ public class TransactionImportController extends BaseController ...@@ -56,15 +56,24 @@ public class TransactionImportController extends BaseController
} }
@GetMapping @GetMapping
public String transactionImport(HttpServletRequest request, Model model) public String transactionImport(WebRequest request, Model model)
{
if(request.getAttribute(RequestAttributeNames.CSV_IMPORT, RequestAttributes.SCOPE_SESSION) == null)
{ {
model.addAttribute(RequestAttributeNames.CSV_IMPORT, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0)); model.addAttribute(RequestAttributeNames.CSV_IMPORT, new CsvImport(null, ";", StandardCharsets.UTF_8.name(), 0));
}
final Object bindingResult = request.getAttribute(RequestAttributeNames.ERROR_UPLOAD, RequestAttributes.SCOPE_SESSION);
if(bindingResult != null)
{
model.addAttribute(ModelAttributes.ERROR, bindingResult);
}
return ReturnValues.TRANSACTION_IMPORT; return ReturnValues.TRANSACTION_IMPORT;
} }
@PostMapping("/upload") @PostMapping("/upload")
public String upload(WebRequest request, public String upload(WebRequest request,
Model model,
@ModelAttribute("CsvImport") CsvImport csvImport, @ModelAttribute("CsvImport") CsvImport csvImport,
BindingResult bindingResult) BindingResult bindingResult)
{ {
...@@ -85,9 +94,9 @@ public class TransactionImportController extends BaseController ...@@ -85,9 +94,9 @@ public class TransactionImportController extends BaseController
if(bindingResult.hasErrors()) if(bindingResult.hasErrors())
{ {
model.addAttribute(ModelAttributes.ERROR, bindingResult); request.setAttribute(RequestAttributeNames.ERROR_UPLOAD, bindingResult, RequestAttributes.SCOPE_SESSION);
request.setAttribute(RequestAttributeNames.CSV_IMPORT, csvImport, RequestAttributes.SCOPE_SESSION); request.setAttribute(RequestAttributeNames.CSV_IMPORT, csvImport, RequestAttributes.SCOPE_SESSION);
return ReturnValues.TRANSACTION_IMPORT; return ReturnValues.REDIRECT_IMPORT;
} }
try try
...@@ -95,6 +104,8 @@ public class TransactionImportController extends BaseController ...@@ -95,6 +104,8 @@ public class TransactionImportController extends BaseController
final String csvString = new String(csvImport.file().getBytes(), csvImport.encoding()); final String csvString = new String(csvImport.file().getBytes(), csvImport.encoding());
final List<CsvRow> csvRows = CsvParser.parseCsv(csvString, csvImport.separator().charAt(0), csvImport.numberOfLinesToSkip()); final List<CsvRow> csvRows = CsvParser.parseCsv(csvString, csvImport.separator().charAt(0), csvImport.numberOfLinesToSkip());
removeAllAttributes(request);
request.setAttribute(RequestAttributeNames.CSV_IMPORT, csvImport, RequestAttributes.SCOPE_SESSION); request.setAttribute(RequestAttributeNames.CSV_IMPORT, csvImport, RequestAttributes.SCOPE_SESSION);
request.setAttribute(RequestAttributeNames.CSV_ROWS, csvRows, RequestAttributes.SCOPE_SESSION); request.setAttribute(RequestAttributeNames.CSV_ROWS, csvRows, RequestAttributes.SCOPE_SESSION);
} }
...@@ -103,18 +114,23 @@ public class TransactionImportController extends BaseController ...@@ -103,18 +114,23 @@ public class TransactionImportController extends BaseController
LOGGER.error("CSV upload failed", e); LOGGER.error("CSV upload failed", e);
// TODO: show in html // TODO: show in html
model.addAttribute(ModelAttributes.ERROR_UPLOAD, e.getMessage()); request.setAttribute(RequestAttributeNames.ERROR_UPLOAD_FILE, e.getMessage(), RequestAttributes.SCOPE_SESSION);
} }
return ReturnValues.REDIRECT_IMPORT;
return ReturnValues.TRANSACTION_IMPORT;
} }
@GetMapping("/cancel") @GetMapping("/cancel")
public String cancel(WebRequest request) public String cancel(WebRequest request)
{
removeAllAttributes(request);
return ReturnValues.REDIRECT_IMPORT;
}
private void removeAllAttributes(WebRequest request)
{ {
request.removeAttribute(RequestAttributeNames.CSV_IMPORT, RequestAttributes.SCOPE_SESSION); request.removeAttribute(RequestAttributeNames.CSV_IMPORT, RequestAttributes.SCOPE_SESSION);
request.removeAttribute(RequestAttributeNames.CSV_ROWS, RequestAttributes.SCOPE_SESSION); request.removeAttribute(RequestAttributeNames.CSV_ROWS, RequestAttributes.SCOPE_SESSION);
request.removeAttribute(RequestAttributeNames.ERROR_UPLOAD, RequestAttributes.SCOPE_SESSION);
return ReturnValues.REDIRECT_IMPORT; request.removeAttribute(RequestAttributeNames.ERROR_UPLOAD_FILE, RequestAttributes.SCOPE_SESSION);
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment