我正在尝试使用以下方式将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
有任何想法吗?
最佳答案
您需要将其更改为
@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}/")