When we are doing web development, we will definitely not be able to escape form submission. This article creates and submits a form through Spring Boot using the Kotlin language.
Below, we will add processing form submission based on the previous "Spring Boot and Kotlin Rendering Web Views Using Freemarker Template Engine" project.
The build.gradle file has not changed. Here is a complete build.gradle
group 'name.quanke.kotlin'version '1.0-SNAPSHOT'buildscript { ext.kotlin_version = '1.2.10' ext.spring_boot_version = '1.5.4.RELEASE' repositories { mavenCentral() } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath("org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version")// Kotlin integrates SpringBoot's default parameterless constructor, and sets all classes to open class plugin classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version") classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version") }}apply plugin: 'kotlin'apply plugin: "kotlin-spring" // See https://kotlinlang.org/docs/reference/compiler-plugins.html#kotlin-spring-compiler-pluginapply plugin: 'org.springframework.boot'jar { baseName = 'chapter11-5-4-service' version = '0.1.0'}repositories { mavenCentral()}dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version" compile "org.springframework.boot:spring-boot-starter-web:$spring_boot_version" compile "org.springframework.boot:spring-boot-starter-thymeleaf:$spring_boot_version"// compile "com.fasterxml.jackson.module:jackson-module-kotlin:$kotlin_version" testCompile "org.springframework.boot:spring-boot-starter-test:$spring_boot_version" testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"}compileKotlin { kotlinOptions.jvmTarget = "1.8"} compileTestKotlin { kotlinOptions.jvmTarget = "1.8"}Create entity class Hello
/** * Created by http://quanke.name on 2018/1/12. */data class Hello(var id: Long? = 0, var content: String? = "")
Create Controller
import name.quanke.kotlin.chaper11_5_4.entity.Helloimport org.springframework.stereotype.Controllerimport org.springframework.ui.ModelMapimport org.springframework.web.bind.annotation.ModelAttributeimport org.springframework.web.bind.annotation.PostMappingimport org.springframework.web.bind.annotation.RequestMapping/** * Created by http://quanke.name on 2018/1/10. */@Controllerclass HelloController { @RequestMapping("/") fun index(map: ModelMap): String {// / Add an attribute to read map.addAttribute("host", "http://quanke.name") map.addAttribute("hello",Hello()) // The name of the return template file, corresponding to src/main/resources/templates/index.html return "index" } @PostMapping("/hello") fun helloPostSubmit(@ModelAttribute hello: Hello): String { return "result" }}Page display layer
src/main/resources/templates/index.html
<!DOCTYPE html><html xmlns:th="http://www.w3.org/1999/xhtml"><head lang="en"> <title>quanke.name</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/></head><body><h1 th:text="${host}">Hello World</h1><h1>Form</h1><form action="#" th:action="@{/hello}" th:object="${hello}" method="post"> <p>Id: <input type="text" th:field="*{id}"/></p> <p>Message: <input type="text" th:field="*{content}"/></p> <p><input type="submit" value="Submit"/> <input type="reset" value="Reset"/></p></form></body></html> src/main/resources/templates/result.html
<!DOCTYPE html><html lang="en" xmlns:th="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>Title</title></head><body><h1>Result</h1><p th:text="'id: ' + ${hello.id}"/><p th:text="'content: ' + ${hello.content}"/><a href="/" rel="external nofollow" >Submit another message</a></body></html>Spring Boot Start
import org.springframework.boot.SpringApplicationimport org.springframework.boot.autoconfigure.SpringBootApplication/** * Created by http://quanke.name on 2018/1/9. */@SpringBootApplicationclass Applicationfun main(args: Array<String>) { SpringApplication.run(Application::class.java, *args)}Start the project and visit ttp://localhost:8080/:
Reference: https://spring.io/guides/gs/handling-form-submission/
The above is all the content of this article. I hope it will be helpful to everyone's learning and I hope everyone will support Wulin.com more.