来自@PathVariable Java Spring的不完整文本

时间:2015-02-16 20:23:13

标签: java spring rest

我尝试使用以下命令向控制器发送ID:

<a href="/host/admin/sensor/downloadCSV/${sensor.id}" class="btn btn-primary"> Export CSV</a>

${sensor.id}变量的内容为:testApp_provider.osom_component2.RT3

在我的控制器中,我得到了它:

@RequestMapping("/downloadCSV/{sensorId}")
public ModelAndView handleRequestInternal(HttpServletResponse response, @PathVariable final String sensorId) throws IOException {
    System.out.println("sensor:"+sensorId);
    return null;
}

println的输出是:

sensor:testApp_provider.osom_component2

我失去了最后一部分:.RT3

任何想法?

1 个答案:

答案 0 :(得分:1)

您需要将其更改为

@RequestMapping("/downloadCSV/{sensorId:.+}")
public ModelAndView handleRequestInternal(HttpServletResponse response, @PathVariable final String sensorId) throws IOException {
    System.out.println("sensor:"+sensorId);
    return null;
}

由于最后一个点后面的所有内容都是Spring的文件扩展名,因此默认情况下它会截断它。

另一个全局解决方案是在注册useRegisteredSuffixPatternMatch时将false属性设置为RequestMappingHandlerMapping

然而,更清洁的方法是在末尾添加尾随/斜杠

@RequestMapping("/downloadCSV/{sensorId}/")