diff -r 785820da6485 -r c9c6abf167c7 src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt --- a/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt Tue Aug 03 12:22:10 2021 +0200 +++ b/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt Tue Aug 03 13:41:32 2021 +0200 @@ -37,6 +37,10 @@ typealias MappingMethod = (HttpRequest, DataAccessObject) -> Unit typealias PathParameters = Map +sealed interface ValidationResult +class ValidationError(val message: String): ValidationResult +class ValidatedValue(val result: T): ValidationResult + class HttpRequest( val request: HttpServletRequest, val response: HttpServletResponse, @@ -155,6 +159,18 @@ fun param(name: String): String? = request.getParameter(name) fun paramArray(name: String): Array = request.getParameterValues(name) ?: emptyArray() + fun param(name: String, validator: (String?) -> (ValidationResult), errorMessages: MutableList): T? { + return when (val result = validator(param(name))) { + is ValidationError -> { + errorMessages.add(i18n(result.message)) + null + } + is ValidatedValue -> { + result.result + } + } + } + private fun forward(jsp: String) { request.getRequestDispatcher(jspPath(jsp)).forward(request, response) }