我有一个用kotlin写的spring boot项目。用java编写的同一个项目无缝地显示jsp页面。但Kotlin一号没有。我的代码在下面。对于jsp页面,kotlin是否存在兼容性问题?
当我运行我的应用程序时,我没有看到任何错误,但是在本地主机上运行时,页面只显示“whitelabel error page”。
我的项目结构
pom.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.3</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<description>Online case record for RHOdisha</description>
<properties>
<java.version>1.8</java.version>
<kotlin.version>1.4.21</kotlin.version>
</properties>
<!--Spring Boot Dependencies -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-r2dbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.projectreactor</groupId>
<artifactId>reactor-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>dev.miku</groupId>
<artifactId>r2dbc-mysql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--Kotlin Dependencies-->
<dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-kotlin</artifactId>
</dependency>
<dependency>
<groupId>io.projectreactor.kotlin</groupId>
<artifactId>reactor-kotlin-extensions</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-reflect</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-stdlib-jdk8</artifactId>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlinx</groupId>
<artifactId>kotlinx-coroutines-reactor</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
<version>3.4.1.Final</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.15</version>
</dependency>
</dependencies>
<build>
<sourceDirectory>${project.basedir}/src/main/kotlin</sourceDirectory>
<testSourceDirectory>${project.basedir}/src/test/kotlin</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-plugin</artifactId>
<configuration>
<args>
<arg>-Xjsr305=strict</arg>
</args>
<compilerPlugins>
<plugin>spring</plugin>
</compilerPlugins>
</configuration>
<dependencies>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-allopen</artifactId>
<version>${kotlin.version}</version>
</dependency>
<dependency>
<groupId>org.jetbrains.kotlin</groupId>
<artifactId>kotlin-maven-noarg</artifactId>
<version>${kotlin.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
应用程序属性
server.port=1206
logging.level.org.springframework.r2dbc=DEBUG
spring.r2dbc.url=r2dbc:pool:mysql://*ip with db name here*
spring.r2dbc.username= *username*
spring.r2dbc.password= *password*
spring.mvc.view.prefix: /WEB-INF/jsp/
spring.mvc.view.suffix: .jsp
控制器.kt
@RestController
class ModuleController(
private val appProperties: AppProperties,
private val userService: UserService
) {
@Autowired
var httpSession: HttpSession? = null
private val logger = Logger.getLogger(this.javaClass)
@GetMapping(RouteURL.WELCOME)
fun onAccessView(mView: Model): String? {
return if (SessionUtils.getUserType(httpSession) != null) {
mView.addAttribute("blockName", SessionUtils.getBlockName(httpSession))
"dashboard"
} else {
"redirect:" + RouteURL.HOME
}
}
@GetMapping(RouteURL.SSOBACK)
fun onSsoBack(request: HttpServletRequest): String {
return "redirect:" + request.scheme + "://" + appProperties.appBaseURL()
}
@GetMapping(RouteURL.LOGOUT)
fun onLogout(request: HttpServletRequest): String {
val userId = Conversion.TryCastInteger(SessionUtils.getUserId(httpSession))
SessionUtils.SessionClear(httpSession)
return "redirect:" + request.scheme + "://" + appProperties.appBaseURL() + "/user/logout/" + userId
}
}
暂无答案!
目前还没有任何答案,快来回答吧!