相关疑难解决方法(0)

从弹簧控制器下载文件

我有一个要求,我需要从网站上下载PDF.PDF需要在代码中生成,我认为这将是freemarker和像iText这样的PDF生成框架的组合.有更好的方法吗?

但是,我的主要问题是如何允许用户通过Spring Controller下载文件?

java spring controller file download

354
推荐指数
9
解决办法
41万
查看次数

带有点(.)的Spring MVC @PathVariable被截断了

这是Spring MVC @PathVariable被截断的问题的延续

Spring论坛声明它已修复(3.2版本)作为ContentNegotiationManager的一部分.见下面的链接.
https://jira.springsource.org/browse/SPR-6164
https://jira.springsource.org/browse/SPR-7632

在我的应用程序中,带有.com的requestParameter被截断.

谁能解释我如何使用这个新功能?它是如何在xml中配置的?

注意:spring论坛 - #1带有点(.)的Spring MVC @PathVariable正在被截断

rest spring spring-mvc spring-annotations

345
推荐指数
14
解决办法
14万
查看次数

Spring MVC请求映射处理程序方法中{id:.+}的含义是什么?

我在控制器中遇到了一个方法.这个id是什么:.+ ??

@RequestMapping(value="/index/{endpoint}/{type}/{id:.+}", method=RequestMethod.POST, consumes=kContentType, produces=kProducesType)
@ResponseBody
public String indexData(@PathVariable(value="endpoint") String endpoint, @PathVariable(value="type") String type, @PathVariable(value="id") String id, @RequestBody String body, HttpServletRequest request) {
    logger.debug("In web controller for endpoint " + endpoint);
    return indexController.indexData(endpoint, type, id, body,  getSecurityContextProvider(request));
}
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc

24
推荐指数
1
解决办法
2万
查看次数

如何更改Spring MVC处理url'dot'字符的行为

我正在尝试将一个Web项目从Jersey迁移到Spring MVC 3.0.这个过程非常简单,直到我开始使用点符号迁移应该处理URL的控制器:"/ myApp/resources/create/root.subFolder1 ".Spring MVC似乎无耻地从URL中删除了".subFolder1"部分,它发生在框架代码内部(参见AbstractUrlHandlerMapping类)

uriTemplateVariables.putAll(getPathMatcher().extractUriTemplateVariables(matchingPattern, urlPath));
Run Code Online (Sandbox Code Playgroud)

所以我的控制器方法是用root path参数调用的,而不是root.subFolder1

我真的想找到一种方法来自定义这种行为.有什么建议吗?

PS.该要求有点保持现有的URL结构,即切换到查询参数"/ myApp/resources/create/?path = root.subFolder1 "的变通方法,我无法考虑.

PS.我的Spring配置看起来像

<mvc:annotation-driven/>

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
    <property name="useDefaultSuffixPattern" value="false" />
</bean>

<context:component-scan base-package="my.app.pkg"/>
Run Code Online (Sandbox Code Playgroud)

java spring-mvc

8
推荐指数
2
解决办法
1万
查看次数

无法在使用Spring开发的Rest API中接收Double数据类型

在我使用Spring Framework开发的REST API中,我有一个Rest端点接收Two Double值,Rest Call是:http:// localhost:8080/restapp/events/nearby/12.910967/77.599570

这里,第一个参数(双数据类型)即12.910967我能正确接收,即12.910967.但是第二个参数,即77.599570,我只能在小数点截断后得到77.0的数据.

我的REST后端是:

@RequestMapping(value = "/nearby/{lat}/{lngi}", method = RequestMethod.GET, produces = "application/json")
public List<Event> getNearByEvents(@PathVariable("lat") Double lat, @PathVariable("lngi") Double lngi, HttpServletResponse response) throws IOException 
Run Code Online (Sandbox Code Playgroud)

如何在REST api中接收双数据类型?

java rest spring spring-mvc

6
推荐指数
1
解决办法
1471
查看次数

SpringMVC @PathVariable被截断

我正在使用SpringMVC 3.1.3.如果@PathVariable最后有空格,则会截断/修剪它.有没有办法阻止修剪

 @RequestMapping(value="deleteConfig/{id}/", method=RequestMethod.DELETE)
 public @ResponseBody JsonResponse<?> deleteConfig(@PathVariable("id") String id) 
Run Code Online (Sandbox Code Playgroud)

如果来自客户端的id最后有一个空格,比如 - "abc"或者甚至是"abc%20"那么我在控制器中得到的变量id只是"abc"而不是"abc"

你能建议一种方法来解决这个问题

spring spring-mvc spring-annotations

5
推荐指数
1
解决办法
916
查看次数

获取请求仅适用于尾部斜杠(弹簧 REST 注释)

我有一个 Spring REST 控制器:

@RestController
@RequestMapping(value = "/myresource")
public class MyResourceController {
  ...
}
Run Code Online (Sandbox Code Playgroud)

使用 GET 请求方法:

@RequestMapping(method = GET, value = "/{value1}/{value2}/{value3}", produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8")    
public ResponseEntity<MyResponseType> getMyResource(
  @ApiParam(value = "...",...)
  @PathVariable("value1") String value1,
  @ApiParam(value = "...",...)
  @PathVariable("value2") String value2,
  @ApiParam(value = "...",...)
  @PathVariable("value3") String value3) {
//...
}
Run Code Online (Sandbox Code Playgroud)

我希望这个方法可以通过以下方式调用:

http://myserver:8080/myresource/value1/value2/value3
Run Code Online (Sandbox Code Playgroud)

但它只能通过斜杠到达:

http://myserver:8080/myresource/value1/value2/value3/
Run Code Online (Sandbox Code Playgroud)

为什么会这样或者是什么导致了这种情况?

Swagger 假设没有尾部斜杠,我现在无法使用 swagger 发送请求。

我该怎么做才能使第一个 URL 工作而不使第二个 URL 工作?

非常感谢您的评论和回答。


编辑 2:

我发现没有斜线 value3 的信息是不完整的。value3 必须是电子邮件地址,但从最后一个点开始的所有内容都被切断了。因此,我收到的不是“myemail@something.de”,而是“myemail@something”。

这解释了为什么我无法获得正确的结果(无内容和 HTTP 状态代码 404)。但我仍然不明白为什么会发生这种情况。此外,如果我的电子邮件地址在顶级域(如 .com)中包含三个字母,则请求永远不会到达 GET 方法“getMyResource”...... …

java rest spring annotations trailing-slash

5
推荐指数
1
解决办法
4260
查看次数

Spring RequestMapping期间

在我的Spring App中,我有一个像这样注释的控制器:

@Controller
@RequestMapping("/1/site") 
Run Code Online (Sandbox Code Playgroud)

如果我尝试将请求映射值更改为此值,则会得到404:

@Controller
@RequestMapping("/1.0/site") 
Run Code Online (Sandbox Code Playgroud)

期间发生了什么,我该如何解决?

java spring spring-mvc

3
推荐指数
1
解决办法
702
查看次数

.com电子邮件地址的“获取请求”失败,因为Spring将其解释为扩展名

(请参阅2015年8月20日下方的编辑部分)

最近我遇到了类似的问题(Get请求仅适用于斜杠(spring REST注释)),解决方案是在@RequestMapping的值中添加一个正则表达式(另请参见Spring MVC @PathVariable被截断)。

但是,现在我们已经意识到问题仍然存在,但仅适用于以.com或.org结尾的电子邮件地址。这很奇怪。

不久,我使用Spring Annotations构建REST服务。我有一个带有三个参数的GET请求,最后一个是电子邮件。

我的控制器:

@RequestMapping(method = GET, value = "/{value1}/{value2}/{value3:.+}",
  produces = MediaType.APPLICATION_JSON_VALUE + ";charset=UTF-8")    
  public ResponseEntity<MyResponseType> getMyResource(
    @ApiParam(value = "...",...)
    @PathVariable("value1") String value1,
    @ApiParam(value = "...",...)
    @PathVariable("value2") String value2,
    @ApiParam(value = "...",...)
    @PathVariable("value3") String value3) {
      //...
}
Run Code Online (Sandbox Code Playgroud)

如果我致电: http:// myserver:8080 / myresource / value1 / value2 / value3

如果value3 = email@domain.de / co.uk / .name / .biz /.info,则完全没有问题。

但是,对于某些顶级域名(到目前为止,.com,.org),我收到Http状态码406(不接受)。

如果添加斜杠,它将起作用:

http:// myserver:8080 / myresource / value1 / value2 / …

spring file-extension get media-type http-status-code-406

3
推荐指数
1
解决办法
494
查看次数