1.1 --- a/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt Tue Aug 03 12:22:10 2021 +0200 1.2 +++ b/src/main/kotlin/de/uapcore/lightpit/RequestMapping.kt Tue Aug 03 13:41:32 2021 +0200 1.3 @@ -37,6 +37,10 @@ 1.4 typealias MappingMethod = (HttpRequest, DataAccessObject) -> Unit 1.5 typealias PathParameters = Map<String, String> 1.6 1.7 +sealed interface ValidationResult<T> 1.8 +class ValidationError<T>(val message: String): ValidationResult<T> 1.9 +class ValidatedValue<T>(val result: T): ValidationResult<T> 1.10 + 1.11 class HttpRequest( 1.12 val request: HttpServletRequest, 1.13 val response: HttpServletResponse, 1.14 @@ -155,6 +159,18 @@ 1.15 fun param(name: String): String? = request.getParameter(name) 1.16 fun paramArray(name: String): Array<String> = request.getParameterValues(name) ?: emptyArray() 1.17 1.18 + fun <T> param(name: String, validator: (String?) -> (ValidationResult<T>), errorMessages: MutableList<String>): T? { 1.19 + return when (val result = validator(param(name))) { 1.20 + is ValidationError -> { 1.21 + errorMessages.add(i18n(result.message)) 1.22 + null 1.23 + } 1.24 + is ValidatedValue -> { 1.25 + result.result 1.26 + } 1.27 + } 1.28 + } 1.29 + 1.30 private fun forward(jsp: String) { 1.31 request.getRequestDispatcher(jspPath(jsp)).forward(request, response) 1.32 }