Tag: 春天mvc

Spring MVC控制器PathVariables上的Java bean验证

我试图让Java Bean验证注释在Spring MVC控制器中与路径变量和查询参数一起工作。 (环境:Spring Boot v1.3.5,Springxxx 4.2.6,Kotlin 1.0.3编程语言) 例如 @RequestMapping(value = "/{someId}" …) fun getSomething(**@SomeValidId** @PathVariable("someId") someId: String):… 我已经按照https://raymondhlee.wordpress.com/2015/08/29/validating-spring-mvc-request-mapping-method-parameters/中所述添加了org.springframework.validation.beanvalidation.MethodValidationPostProcessor,并且还添加了org。 springframework.validation.beanvalidation.LocalValidatorFactoryBean作为上面的validatorFactory。 @Configuration …class …. { … @Bean open fun localValidatorFactoryBean() = LocalValidatorFactoryBean() @Bean open fun methodValidationPostProcessor() : MethodValidationPostProcessor { val methodValidationPostProcessor = MethodValidationPostProcessor() methodValidationPostProcessor.setValidator(localValidatorFactoryBean()) return methodValidationPostProcessor } } 但是当我使用org.springframework.validation.annotation.Validated注解Controller类(或者它实现的接口)时,建议看起来像控制器类被代理(这看起来和预期的一样 – https://github.com/spring -projects / spring-security / issues […]

Spring Boot .mustache文件扩展名

我正在开发一个Spring引导应用程序,并使用本文中的 Mustache模板添加一个小配置网页作为示例 。 当我所有的胡子模板文件的扩展名为.html时,我都能正常工作,但问题是我没有得到任何IDE支持。 IntelliJ IDEA有一个小胡子的插件,但扩展必须是.mustache。 但是,当我更改文件扩展名时,最终出现了404错误。 我在官方的例子中看到他们使用.mustache,所以我知道这是可能的。 我无法找到该项目中的任何内容,以表明已更改设置来启用此设置。 唯一的区别是我使用的是Kotlin而不是Java,但我不明白为什么会对胡子文件扩展名产生任何影响。 我错过了什么? 谢谢!

Spring框架吞下自定义转换器的异常

我正面临Spring(和kotlin?)的一个问题,我的全局错误处理程序不会捕获在自定义转换器中引发的任何异常。 我知道春天默认支持string-> UUID映射,但我想明确地检查是否实际抛出异常。 它是下面的转换器。 行为是相同的,没有我自己的转换器的实现。 我的WebMvcConfuguration如下所示: @Configuration class WebMvcConfiguration : WebMvcConfigurerAdapter() { override fun addFormatters(registry: FormatterRegistry) { super.addFormatters(registry) registry.addConverter(Converter<String, UUID> { str -> try { UUID.fromString(str) } catch(e: IllegalArgumentException){ throw RuntimeException(e) } }) } 这是我的GlobalExceptionHandler :(它也包含其他处理程序,为简洁起见我省略) @ControllerAdvice class GlobalExceptionHandler : ResponseEntityExceptionHandler() { @ExceptionHandler(Exception::class) @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ResponseBody fun handleException(ex: Exception): ApiError { logger.info(ex.message, ex) return ApiError(ex.message) } […]

Spring MVC应用程序中的多个ScriptTemplateViewResolvers

我想在我的Spring mvc应用程序中使用两个不同的模板视图解析器。 例如,kotlin和javascript在同一时间。 创建2个ViewResolver bean不是问题。 使用两个ScriptTemplateConfigurer似乎是不可能的,因为ScriptTemplateConfig是由ScriptTemplateView.autodetectViewConfig通过Spring上下文中的ScriptTemplateConfig.class获取的。 有没有办法同时使用两个脚本引擎或目前不支持此功能?

使用Aspect将响应标题添加到所有控制器

我希望我所有的Spring MVC控制器都包含一些常见的响应头文件。 我可以使用以下(Kotlin)做到这一点: @ModelAttribute open fun responseHeaders(response: HttpServletResponse) { //identify the node that serviced the call response.setHeader("host-name", InetAddress.getLocalHost().hostName); //etc } 。 。 因为它适用于所有,我可以使用基类。 但是,有没有建议的方式来使用一个方面?

异常处理程序不能使用`spring-boot-starter-data-rest`

我最后一次Java / Spring的经验大约在四年前。 我开始用Kotlin学习Spring Boot。 我已经创建了一个像这样的RESTful Web服务(在Kotlin中),它工作正常: @RequestMapping("/authorization") public fun authorization(@RequestParam(value = "network-type", defaultValue = "Facebook") name: String, @RequestParam(value = "oauth-token") oauthToken: String, @RequestParam(value = "oauth-token-secret", required = false) oauthTokenSecret: String?): Authorization { //TODO: Handle other social network types return facebookAuth.authorization(oauthToken) } 现在我无法添加一个异常处理程序,当facebookAuth抛出UnauthorizedException。 我试过了: 我试图在控制器上注册一个异常处理程序方法。 我试过用@ControllerAdvice创建交叉异常顾问类 在这两种情况下,异常都没有映射,而是我得到: 白标签错误页面 此应用程序没有明确的映射/错误,所以你看到这是一个后备。 Sun Oct 25 16:00:43 PHT 2015 […]

Kotlin上需要NotNull吗?

我有一个班级: class User( var name: String ) 并映射后的请求: @PostMapping("/user") fun test(@Valid @RequestBody user: User) { //… } 如果客户端发送name: null的用户的JSON,该怎么办? 会被MVC验证器拒绝还是会抛出异常? 我应该使用@NotNull注释name吗? 不幸的是,我不能检查,因为只能写测试(它不可用来创建User(null) )。

kotlin和@Valid Spring注解

我有一个实体: class SomeInfo( @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) var value: String) { var id: Long? = null } 和控制器方法: @RequestMapping(value = "/some-info", method = RequestMethod.POST) public Id create(@Valid @RequestBody SomeInfo someInfo) { … } @Valid注释不起作用。 看来Spring需要一个默认的无参数构造函数,上面的代码变得像这样丑陋(但工作): class SomeInfo() { constructor(value: String) { this.value = value } @NotNull @Pattern(regexp = Constraints.EMAIL_REGEX) lateinit var value: String var id: […]

为什么Spring MVC JSON的Kotlin返回一个空对象?

我一直在玩服务器端Kotlin,Spring MVC和Jackson。 我使用http://start.spring.io/构建了一个简单的应用程序,但是我可能在JsonView注释中犯了一个错误。 这个: @RestController class MyRestController { @RequestMapping("/user") @JsonView(User::class) fun getUser() : User = User("Fred",50) } data class User(val name: String, val age: Int) …当被卷曲调用时 ph@sleek ~ $ curl -X GET http://localhost:8080/user; echo {} ph@sleek ~ $ …当我期望{"name":"Fred","age":50}时,结果是{} {"name":"Fred","age":50} 。 有什么我做错了吗?

我不能在Springboot-Kotlin中排除MongoAutoConfiguration(MongoSocketOpenException)

当试图排除MongoAutoConfiguration时,我得到一个MongoSocketOpenException。 我试图连接到一个远程的MongoDB。 考虑到我在Kotlin工作,@EnableAutoConfiguration语法是否正确? 例外: com.mongodb.MongoSocketOpenException: Exception opening socket at com.mongodb.connection.SocketStream.open(SocketStream.java:63) ~[mongo-java-driver-3.4.2.jar:na] at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongo-java-driver-3.4.2. jar:na] at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:113) ~[mongo-java- driver-3.4.2.jar:na] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_20] Caused by: java.net.ConnectException: Connection refused: connect at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method) ~[na:1.8.0_20] at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85) ~[na:1.8.0_20] at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:345) ~[na:1.8.0_20] at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_20] at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_20] at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) ~[na:1.8.0_20] at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_20] at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_20] at com.mongodb.connection.SocketStreamHelper.initialize(SocketStreamHelper.java:57) […]